Mercurial > vim
annotate src/popupwin.c @ 30424:1a518a4bf1fd
Added tag v9.0.0547 for changeset 221cca379bd5daa63bf08597801e7e15ee2d0187
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Thu, 22 Sep 2022 17:45:04 +0200 |
parents | b871016ea7c1 |
children | 8a25c8215d4a |
rev | line source |
---|---|
16778
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1 /* vi:set ts=8 sts=4 sw=4 noet: |
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2 * |
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
3 * VIM - Vi IMproved by Bram Moolenaar |
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
4 * |
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
5 * Do ":help uganda" in Vim to read a list of people who contributed. |
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
6 * Do ":help credits" in Vim to see a list of people who contributed. |
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
7 * See README.txt for an overview of the Vim source code. |
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
8 */ |
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
9 |
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
10 /* |
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
11 * Implementation of popup windows. See ":help popup". |
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
12 */ |
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
13 |
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
14 #include "vim.h" |
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
15 |
18763
49b78d6465e5
patch 8.1.2371: FEAT_TEXT_PROP is a confusing name
Bram Moolenaar <Bram@vim.org>
parents:
18744
diff
changeset
|
16 #if defined(FEAT_PROP_POPUP) || defined(PROTO) |
16778
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
17 |
16855
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
18 typedef struct { |
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
19 char *pp_name; |
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
20 poppos_T pp_val; |
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
21 } poppos_entry_T; |
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
22 |
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
23 static poppos_entry_T poppos_entries[] = { |
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
24 {"botleft", POPPOS_BOTLEFT}, |
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
25 {"topleft", POPPOS_TOPLEFT}, |
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
26 {"botright", POPPOS_BOTRIGHT}, |
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
27 {"topright", POPPOS_TOPRIGHT}, |
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
28 {"center", POPPOS_CENTER} |
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
29 }; |
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
30 |
29912
c9ff1715f03d
patch 9.0.0294: crash when 'cmdheight' is 0 and popup_clear() used
Bram Moolenaar <Bram@vim.org>
parents:
29900
diff
changeset
|
31 #ifdef HAS_MESSAGE_WINDOW |
30005
bb0e525e1393
patch 9.0.0340: the 'cmdheight' zero support causes too much trouble
Bram Moolenaar <Bram@vim.org>
parents:
29994
diff
changeset
|
32 // Window used for ":echowindow" |
29912
c9ff1715f03d
patch 9.0.0294: crash when 'cmdheight' is 0 and popup_clear() used
Bram Moolenaar <Bram@vim.org>
parents:
29900
diff
changeset
|
33 static win_T *message_win = NULL; |
30222
b871016ea7c1
patch 9.0.0447: using :echowin while at the hit-enter prompt causes problems
Bram Moolenaar <Bram@vim.org>
parents:
30220
diff
changeset
|
34 |
b871016ea7c1
patch 9.0.0447: using :echowin while at the hit-enter prompt causes problems
Bram Moolenaar <Bram@vim.org>
parents:
30220
diff
changeset
|
35 // Flag set when a message is added to the message window, timer is started |
b871016ea7c1
patch 9.0.0447: using :echowin while at the hit-enter prompt causes problems
Bram Moolenaar <Bram@vim.org>
parents:
30220
diff
changeset
|
36 // when the message window is drawn. This might be after pressing Enter at the |
b871016ea7c1
patch 9.0.0447: using :echowin while at the hit-enter prompt causes problems
Bram Moolenaar <Bram@vim.org>
parents:
30220
diff
changeset
|
37 // hit-enter prompt. |
b871016ea7c1
patch 9.0.0447: using :echowin while at the hit-enter prompt causes problems
Bram Moolenaar <Bram@vim.org>
parents:
30220
diff
changeset
|
38 static int start_message_win_timer = FALSE; |
b871016ea7c1
patch 9.0.0447: using :echowin while at the hit-enter prompt causes problems
Bram Moolenaar <Bram@vim.org>
parents:
30220
diff
changeset
|
39 |
b871016ea7c1
patch 9.0.0447: using :echowin while at the hit-enter prompt causes problems
Bram Moolenaar <Bram@vim.org>
parents:
30220
diff
changeset
|
40 static void may_start_message_win_timer(win_T *wp); |
29912
c9ff1715f03d
patch 9.0.0294: crash when 'cmdheight' is 0 and popup_clear() used
Bram Moolenaar <Bram@vim.org>
parents:
29900
diff
changeset
|
41 #endif |
c9ff1715f03d
patch 9.0.0294: crash when 'cmdheight' is 0 and popup_clear() used
Bram Moolenaar <Bram@vim.org>
parents:
29900
diff
changeset
|
42 |
17789
0f7ae8010787
patch 8.1.1891: functions used in one file are global
Bram Moolenaar <Bram@vim.org>
parents:
17771
diff
changeset
|
43 static void popup_adjust_position(win_T *wp); |
0f7ae8010787
patch 8.1.1891: functions used in one file are global
Bram Moolenaar <Bram@vim.org>
parents:
17771
diff
changeset
|
44 |
16778
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
45 /* |
16902
23645f9a5ce2
patch 8.1.1452: line and col property of popup windows not properly checked
Bram Moolenaar <Bram@vim.org>
parents:
16898
diff
changeset
|
46 * Get option value for "key", which is "line" or "col". |
16853
e6bcccccbf7b
patch 8.1.1428: popup_atcursor() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16851
diff
changeset
|
47 * Handles "cursor+N" and "cursor-N". |
17879
5d5b460926ca
patch 8.1.1936: not enough tests for text property popup window
Bram Moolenaar <Bram@vim.org>
parents:
17875
diff
changeset
|
48 * Returns MAXCOL if the entry is not present. |
16853
e6bcccccbf7b
patch 8.1.1428: popup_atcursor() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16851
diff
changeset
|
49 */ |
e6bcccccbf7b
patch 8.1.1428: popup_atcursor() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16851
diff
changeset
|
50 static int |
16855
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
51 popup_options_one(dict_T *dict, char_u *key) |
16853
e6bcccccbf7b
patch 8.1.1428: popup_atcursor() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16851
diff
changeset
|
52 { |
e6bcccccbf7b
patch 8.1.1428: popup_atcursor() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16851
diff
changeset
|
53 dictitem_T *di; |
e6bcccccbf7b
patch 8.1.1428: popup_atcursor() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16851
diff
changeset
|
54 char_u *val; |
e6bcccccbf7b
patch 8.1.1428: popup_atcursor() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16851
diff
changeset
|
55 char_u *s; |
e6bcccccbf7b
patch 8.1.1428: popup_atcursor() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16851
diff
changeset
|
56 char_u *endp; |
e6bcccccbf7b
patch 8.1.1428: popup_atcursor() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16851
diff
changeset
|
57 int n = 0; |
e6bcccccbf7b
patch 8.1.1428: popup_atcursor() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16851
diff
changeset
|
58 |
e6bcccccbf7b
patch 8.1.1428: popup_atcursor() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16851
diff
changeset
|
59 di = dict_find(dict, key, -1); |
e6bcccccbf7b
patch 8.1.1428: popup_atcursor() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16851
diff
changeset
|
60 if (di == NULL) |
17879
5d5b460926ca
patch 8.1.1936: not enough tests for text property popup window
Bram Moolenaar <Bram@vim.org>
parents:
17875
diff
changeset
|
61 return MAXCOL; |
16853
e6bcccccbf7b
patch 8.1.1428: popup_atcursor() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16851
diff
changeset
|
62 |
e6bcccccbf7b
patch 8.1.1428: popup_atcursor() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16851
diff
changeset
|
63 val = tv_get_string(&di->di_tv); |
e6bcccccbf7b
patch 8.1.1428: popup_atcursor() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16851
diff
changeset
|
64 if (STRNCMP(val, "cursor", 6) != 0) |
16902
23645f9a5ce2
patch 8.1.1452: line and col property of popup windows not properly checked
Bram Moolenaar <Bram@vim.org>
parents:
16898
diff
changeset
|
65 return dict_get_number_check(dict, key); |
16853
e6bcccccbf7b
patch 8.1.1428: popup_atcursor() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16851
diff
changeset
|
66 |
e6bcccccbf7b
patch 8.1.1428: popup_atcursor() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16851
diff
changeset
|
67 setcursor_mayforce(TRUE); |
e6bcccccbf7b
patch 8.1.1428: popup_atcursor() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16851
diff
changeset
|
68 s = val + 6; |
e6bcccccbf7b
patch 8.1.1428: popup_atcursor() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16851
diff
changeset
|
69 if (*s != NUL) |
e6bcccccbf7b
patch 8.1.1428: popup_atcursor() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16851
diff
changeset
|
70 { |
16902
23645f9a5ce2
patch 8.1.1452: line and col property of popup windows not properly checked
Bram Moolenaar <Bram@vim.org>
parents:
16898
diff
changeset
|
71 endp = s; |
23645f9a5ce2
patch 8.1.1452: line and col property of popup windows not properly checked
Bram Moolenaar <Bram@vim.org>
parents:
16898
diff
changeset
|
72 if (*skipwhite(s) == '+' || *skipwhite(s) == '-') |
23645f9a5ce2
patch 8.1.1452: line and col property of popup windows not properly checked
Bram Moolenaar <Bram@vim.org>
parents:
16898
diff
changeset
|
73 n = strtol((char *)s, (char **)&endp, 10); |
16853
e6bcccccbf7b
patch 8.1.1428: popup_atcursor() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16851
diff
changeset
|
74 if (endp != NULL && *skipwhite(endp) != NUL) |
e6bcccccbf7b
patch 8.1.1428: popup_atcursor() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16851
diff
changeset
|
75 { |
25064
8f2262c72178
patch 8.2.3069: error messages are spread out
Bram Moolenaar <Bram@vim.org>
parents:
24768
diff
changeset
|
76 semsg(_(e_invalid_expression_str), val); |
16853
e6bcccccbf7b
patch 8.1.1428: popup_atcursor() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16851
diff
changeset
|
77 return 0; |
e6bcccccbf7b
patch 8.1.1428: popup_atcursor() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16851
diff
changeset
|
78 } |
e6bcccccbf7b
patch 8.1.1428: popup_atcursor() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16851
diff
changeset
|
79 } |
e6bcccccbf7b
patch 8.1.1428: popup_atcursor() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16851
diff
changeset
|
80 |
e6bcccccbf7b
patch 8.1.1428: popup_atcursor() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16851
diff
changeset
|
81 if (STRCMP(key, "line") == 0) |
e6bcccccbf7b
patch 8.1.1428: popup_atcursor() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16851
diff
changeset
|
82 n = screen_screenrow() + 1 + n; |
e6bcccccbf7b
patch 8.1.1428: popup_atcursor() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16851
diff
changeset
|
83 else // "col" |
e6bcccccbf7b
patch 8.1.1428: popup_atcursor() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16851
diff
changeset
|
84 n = screen_screencol() + 1 + n; |
e6bcccccbf7b
patch 8.1.1428: popup_atcursor() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16851
diff
changeset
|
85 |
18432
ee8db42dacf6
patch 8.1.2210: using negative offset for popup_create() does not work
Bram Moolenaar <Bram@vim.org>
parents:
18398
diff
changeset
|
86 // Zero means "not set", use -1 instead. |
ee8db42dacf6
patch 8.1.2210: using negative offset for popup_create() does not work
Bram Moolenaar <Bram@vim.org>
parents:
18398
diff
changeset
|
87 if (n == 0) |
ee8db42dacf6
patch 8.1.2210: using negative offset for popup_create() does not work
Bram Moolenaar <Bram@vim.org>
parents:
18398
diff
changeset
|
88 n = -1; |
16853
e6bcccccbf7b
patch 8.1.1428: popup_atcursor() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16851
diff
changeset
|
89 return n; |
e6bcccccbf7b
patch 8.1.1428: popup_atcursor() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16851
diff
changeset
|
90 } |
e6bcccccbf7b
patch 8.1.1428: popup_atcursor() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16851
diff
changeset
|
91 |
16855
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
92 static void |
17123
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
93 set_padding_border(dict_T *dict, int *array, char *name, int max_val) |
16884
59e4148c0c73
patch 8.1.1443: popup window padding and border not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16880
diff
changeset
|
94 { |
59e4148c0c73
patch 8.1.1443: popup window padding and border not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16880
diff
changeset
|
95 dictitem_T *di; |
59e4148c0c73
patch 8.1.1443: popup window padding and border not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16880
diff
changeset
|
96 |
59e4148c0c73
patch 8.1.1443: popup window padding and border not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16880
diff
changeset
|
97 di = dict_find(dict, (char_u *)name, -1); |
59e4148c0c73
patch 8.1.1443: popup window padding and border not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16880
diff
changeset
|
98 if (di != NULL) |
59e4148c0c73
patch 8.1.1443: popup window padding and border not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16880
diff
changeset
|
99 { |
59e4148c0c73
patch 8.1.1443: popup window padding and border not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16880
diff
changeset
|
100 if (di->di_tv.v_type != VAR_LIST) |
26877
06a137af96f8
patch 8.2.3967: error messages are spread out
Bram Moolenaar <Bram@vim.org>
parents:
26865
diff
changeset
|
101 emsg(_(e_list_required)); |
16884
59e4148c0c73
patch 8.1.1443: popup window padding and border not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16880
diff
changeset
|
102 else |
59e4148c0c73
patch 8.1.1443: popup window padding and border not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16880
diff
changeset
|
103 { |
59e4148c0c73
patch 8.1.1443: popup window padding and border not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16880
diff
changeset
|
104 list_T *list = di->di_tv.vval.v_list; |
59e4148c0c73
patch 8.1.1443: popup window padding and border not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16880
diff
changeset
|
105 listitem_T *li; |
59e4148c0c73
patch 8.1.1443: popup window padding and border not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16880
diff
changeset
|
106 int i; |
59e4148c0c73
patch 8.1.1443: popup window padding and border not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16880
diff
changeset
|
107 int nr; |
59e4148c0c73
patch 8.1.1443: popup window padding and border not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16880
diff
changeset
|
108 |
59e4148c0c73
patch 8.1.1443: popup window padding and border not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16880
diff
changeset
|
109 for (i = 0; i < 4; ++i) |
59e4148c0c73
patch 8.1.1443: popup window padding and border not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16880
diff
changeset
|
110 array[i] = 1; |
59e4148c0c73
patch 8.1.1443: popup window padding and border not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16880
diff
changeset
|
111 if (list != NULL) |
19241
c53dbbf3229b
patch 8.2.0179: still a few places where range() does not work
Bram Moolenaar <Bram@vim.org>
parents:
19166
diff
changeset
|
112 { |
20392
4c317d8c1051
patch 8.2.0751: Vim9: performance can be improved
Bram Moolenaar <Bram@vim.org>
parents:
20386
diff
changeset
|
113 CHECK_LIST_MATERIALIZE(list); |
16884
59e4148c0c73
patch 8.1.1443: popup window padding and border not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16880
diff
changeset
|
114 for (i = 0, li = list->lv_first; i < 4 && i < list->lv_len; |
59e4148c0c73
patch 8.1.1443: popup window padding and border not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16880
diff
changeset
|
115 ++i, li = li->li_next) |
59e4148c0c73
patch 8.1.1443: popup window padding and border not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16880
diff
changeset
|
116 { |
59e4148c0c73
patch 8.1.1443: popup window padding and border not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16880
diff
changeset
|
117 nr = (int)tv_get_number(&li->li_tv); |
59e4148c0c73
patch 8.1.1443: popup window padding and border not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16880
diff
changeset
|
118 if (nr >= 0) |
59e4148c0c73
patch 8.1.1443: popup window padding and border not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16880
diff
changeset
|
119 array[i] = nr > max_val ? max_val : nr; |
59e4148c0c73
patch 8.1.1443: popup window padding and border not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16880
diff
changeset
|
120 } |
19241
c53dbbf3229b
patch 8.2.0179: still a few places where range() does not work
Bram Moolenaar <Bram@vim.org>
parents:
19166
diff
changeset
|
121 } |
16884
59e4148c0c73
patch 8.1.1443: popup window padding and border not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16880
diff
changeset
|
122 } |
59e4148c0c73
patch 8.1.1443: popup window padding and border not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16880
diff
changeset
|
123 } |
59e4148c0c73
patch 8.1.1443: popup window padding and border not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16880
diff
changeset
|
124 } |
59e4148c0c73
patch 8.1.1443: popup window padding and border not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16880
diff
changeset
|
125 |
16853
e6bcccccbf7b
patch 8.1.1428: popup_atcursor() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16851
diff
changeset
|
126 /* |
16908
df06694b761b
patch 8.1.1455: popup_atcursor() not completely implemented
Bram Moolenaar <Bram@vim.org>
parents:
16904
diff
changeset
|
127 * Used when popup options contain "moved": set default moved values. |
df06694b761b
patch 8.1.1455: popup_atcursor() not completely implemented
Bram Moolenaar <Bram@vim.org>
parents:
16904
diff
changeset
|
128 */ |
df06694b761b
patch 8.1.1455: popup_atcursor() not completely implemented
Bram Moolenaar <Bram@vim.org>
parents:
16904
diff
changeset
|
129 static void |
df06694b761b
patch 8.1.1455: popup_atcursor() not completely implemented
Bram Moolenaar <Bram@vim.org>
parents:
16904
diff
changeset
|
130 set_moved_values(win_T *wp) |
df06694b761b
patch 8.1.1455: popup_atcursor() not completely implemented
Bram Moolenaar <Bram@vim.org>
parents:
16904
diff
changeset
|
131 { |
df06694b761b
patch 8.1.1455: popup_atcursor() not completely implemented
Bram Moolenaar <Bram@vim.org>
parents:
16904
diff
changeset
|
132 wp->w_popup_curwin = curwin; |
df06694b761b
patch 8.1.1455: popup_atcursor() not completely implemented
Bram Moolenaar <Bram@vim.org>
parents:
16904
diff
changeset
|
133 wp->w_popup_lnum = curwin->w_cursor.lnum; |
df06694b761b
patch 8.1.1455: popup_atcursor() not completely implemented
Bram Moolenaar <Bram@vim.org>
parents:
16904
diff
changeset
|
134 wp->w_popup_mincol = curwin->w_cursor.col; |
df06694b761b
patch 8.1.1455: popup_atcursor() not completely implemented
Bram Moolenaar <Bram@vim.org>
parents:
16904
diff
changeset
|
135 wp->w_popup_maxcol = curwin->w_cursor.col; |
df06694b761b
patch 8.1.1455: popup_atcursor() not completely implemented
Bram Moolenaar <Bram@vim.org>
parents:
16904
diff
changeset
|
136 } |
df06694b761b
patch 8.1.1455: popup_atcursor() not completely implemented
Bram Moolenaar <Bram@vim.org>
parents:
16904
diff
changeset
|
137 |
df06694b761b
patch 8.1.1455: popup_atcursor() not completely implemented
Bram Moolenaar <Bram@vim.org>
parents:
16904
diff
changeset
|
138 /* |
df06694b761b
patch 8.1.1455: popup_atcursor() not completely implemented
Bram Moolenaar <Bram@vim.org>
parents:
16904
diff
changeset
|
139 * Used when popup options contain "moved" with "word" or "WORD". |
df06694b761b
patch 8.1.1455: popup_atcursor() not completely implemented
Bram Moolenaar <Bram@vim.org>
parents:
16904
diff
changeset
|
140 */ |
df06694b761b
patch 8.1.1455: popup_atcursor() not completely implemented
Bram Moolenaar <Bram@vim.org>
parents:
16904
diff
changeset
|
141 static void |
df06694b761b
patch 8.1.1455: popup_atcursor() not completely implemented
Bram Moolenaar <Bram@vim.org>
parents:
16904
diff
changeset
|
142 set_moved_columns(win_T *wp, int flags) |
df06694b761b
patch 8.1.1455: popup_atcursor() not completely implemented
Bram Moolenaar <Bram@vim.org>
parents:
16904
diff
changeset
|
143 { |
df06694b761b
patch 8.1.1455: popup_atcursor() not completely implemented
Bram Moolenaar <Bram@vim.org>
parents:
16904
diff
changeset
|
144 char_u *ptr; |
df06694b761b
patch 8.1.1455: popup_atcursor() not completely implemented
Bram Moolenaar <Bram@vim.org>
parents:
16904
diff
changeset
|
145 int len = find_ident_under_cursor(&ptr, flags | FIND_NOERROR); |
df06694b761b
patch 8.1.1455: popup_atcursor() not completely implemented
Bram Moolenaar <Bram@vim.org>
parents:
16904
diff
changeset
|
146 |
df06694b761b
patch 8.1.1455: popup_atcursor() not completely implemented
Bram Moolenaar <Bram@vim.org>
parents:
16904
diff
changeset
|
147 if (len > 0) |
df06694b761b
patch 8.1.1455: popup_atcursor() not completely implemented
Bram Moolenaar <Bram@vim.org>
parents:
16904
diff
changeset
|
148 { |
df06694b761b
patch 8.1.1455: popup_atcursor() not completely implemented
Bram Moolenaar <Bram@vim.org>
parents:
16904
diff
changeset
|
149 wp->w_popup_mincol = (int)(ptr - ml_get_curline()); |
df06694b761b
patch 8.1.1455: popup_atcursor() not completely implemented
Bram Moolenaar <Bram@vim.org>
parents:
16904
diff
changeset
|
150 wp->w_popup_maxcol = wp->w_popup_mincol + len - 1; |
df06694b761b
patch 8.1.1455: popup_atcursor() not completely implemented
Bram Moolenaar <Bram@vim.org>
parents:
16904
diff
changeset
|
151 } |
df06694b761b
patch 8.1.1455: popup_atcursor() not completely implemented
Bram Moolenaar <Bram@vim.org>
parents:
16904
diff
changeset
|
152 } |
df06694b761b
patch 8.1.1455: popup_atcursor() not completely implemented
Bram Moolenaar <Bram@vim.org>
parents:
16904
diff
changeset
|
153 |
17051
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
154 /* |
17292
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
155 * Used when popup options contain "mousemoved": set default moved values. |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
156 */ |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
157 static void |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
158 set_mousemoved_values(win_T *wp) |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
159 { |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
160 wp->w_popup_mouse_row = mouse_row; |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
161 wp->w_popup_mouse_mincol = mouse_col; |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
162 wp->w_popup_mouse_maxcol = mouse_col; |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
163 } |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
164 |
28187
d27a9eed9849
patch 8.2.4619: mapping is cancelled when mouse moves and popup is visible
Bram Moolenaar <Bram@vim.org>
parents:
28089
diff
changeset
|
165 static void |
d27a9eed9849
patch 8.2.4619: mapping is cancelled when mouse moves and popup is visible
Bram Moolenaar <Bram@vim.org>
parents:
28089
diff
changeset
|
166 update_popup_uses_mouse_move(void) |
d27a9eed9849
patch 8.2.4619: mapping is cancelled when mouse moves and popup is visible
Bram Moolenaar <Bram@vim.org>
parents:
28089
diff
changeset
|
167 { |
d27a9eed9849
patch 8.2.4619: mapping is cancelled when mouse moves and popup is visible
Bram Moolenaar <Bram@vim.org>
parents:
28089
diff
changeset
|
168 popup_uses_mouse_move = FALSE; |
d27a9eed9849
patch 8.2.4619: mapping is cancelled when mouse moves and popup is visible
Bram Moolenaar <Bram@vim.org>
parents:
28089
diff
changeset
|
169 if (popup_visible) |
d27a9eed9849
patch 8.2.4619: mapping is cancelled when mouse moves and popup is visible
Bram Moolenaar <Bram@vim.org>
parents:
28089
diff
changeset
|
170 { |
d27a9eed9849
patch 8.2.4619: mapping is cancelled when mouse moves and popup is visible
Bram Moolenaar <Bram@vim.org>
parents:
28089
diff
changeset
|
171 win_T *wp; |
d27a9eed9849
patch 8.2.4619: mapping is cancelled when mouse moves and popup is visible
Bram Moolenaar <Bram@vim.org>
parents:
28089
diff
changeset
|
172 |
d27a9eed9849
patch 8.2.4619: mapping is cancelled when mouse moves and popup is visible
Bram Moolenaar <Bram@vim.org>
parents:
28089
diff
changeset
|
173 FOR_ALL_POPUPWINS(wp) |
d27a9eed9849
patch 8.2.4619: mapping is cancelled when mouse moves and popup is visible
Bram Moolenaar <Bram@vim.org>
parents:
28089
diff
changeset
|
174 if (wp->w_popup_mouse_row != 0) |
d27a9eed9849
patch 8.2.4619: mapping is cancelled when mouse moves and popup is visible
Bram Moolenaar <Bram@vim.org>
parents:
28089
diff
changeset
|
175 { |
d27a9eed9849
patch 8.2.4619: mapping is cancelled when mouse moves and popup is visible
Bram Moolenaar <Bram@vim.org>
parents:
28089
diff
changeset
|
176 popup_uses_mouse_move = TRUE; |
d27a9eed9849
patch 8.2.4619: mapping is cancelled when mouse moves and popup is visible
Bram Moolenaar <Bram@vim.org>
parents:
28089
diff
changeset
|
177 return; |
d27a9eed9849
patch 8.2.4619: mapping is cancelled when mouse moves and popup is visible
Bram Moolenaar <Bram@vim.org>
parents:
28089
diff
changeset
|
178 } |
d27a9eed9849
patch 8.2.4619: mapping is cancelled when mouse moves and popup is visible
Bram Moolenaar <Bram@vim.org>
parents:
28089
diff
changeset
|
179 FOR_ALL_POPUPWINS_IN_TAB(curtab, wp) |
d27a9eed9849
patch 8.2.4619: mapping is cancelled when mouse moves and popup is visible
Bram Moolenaar <Bram@vim.org>
parents:
28089
diff
changeset
|
180 if (wp->w_popup_mouse_row != 0) |
d27a9eed9849
patch 8.2.4619: mapping is cancelled when mouse moves and popup is visible
Bram Moolenaar <Bram@vim.org>
parents:
28089
diff
changeset
|
181 { |
d27a9eed9849
patch 8.2.4619: mapping is cancelled when mouse moves and popup is visible
Bram Moolenaar <Bram@vim.org>
parents:
28089
diff
changeset
|
182 popup_uses_mouse_move = TRUE; |
d27a9eed9849
patch 8.2.4619: mapping is cancelled when mouse moves and popup is visible
Bram Moolenaar <Bram@vim.org>
parents:
28089
diff
changeset
|
183 return; |
d27a9eed9849
patch 8.2.4619: mapping is cancelled when mouse moves and popup is visible
Bram Moolenaar <Bram@vim.org>
parents:
28089
diff
changeset
|
184 } |
d27a9eed9849
patch 8.2.4619: mapping is cancelled when mouse moves and popup is visible
Bram Moolenaar <Bram@vim.org>
parents:
28089
diff
changeset
|
185 } |
d27a9eed9849
patch 8.2.4619: mapping is cancelled when mouse moves and popup is visible
Bram Moolenaar <Bram@vim.org>
parents:
28089
diff
changeset
|
186 } |
d27a9eed9849
patch 8.2.4619: mapping is cancelled when mouse moves and popup is visible
Bram Moolenaar <Bram@vim.org>
parents:
28089
diff
changeset
|
187 |
17292
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
188 /* |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
189 * Used when popup options contain "moved" with "word" or "WORD". |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
190 */ |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
191 static void |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
192 set_mousemoved_columns(win_T *wp, int flags) |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
193 { |
17320
33dccaafb214
patch 8.1.1659: popup window "mousemoved" values not correct
Bram Moolenaar <Bram@vim.org>
parents:
17318
diff
changeset
|
194 win_T *textwp; |
17292
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
195 char_u *text; |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
196 int col; |
17320
33dccaafb214
patch 8.1.1659: popup window "mousemoved" values not correct
Bram Moolenaar <Bram@vim.org>
parents:
17318
diff
changeset
|
197 pos_T pos; |
33dccaafb214
patch 8.1.1659: popup window "mousemoved" values not correct
Bram Moolenaar <Bram@vim.org>
parents:
17318
diff
changeset
|
198 colnr_T mcol; |
17292
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
199 |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
200 if (find_word_under_cursor(mouse_row, mouse_col, TRUE, flags, |
17320
33dccaafb214
patch 8.1.1659: popup window "mousemoved" values not correct
Bram Moolenaar <Bram@vim.org>
parents:
17318
diff
changeset
|
201 &textwp, &pos.lnum, &text, NULL, &col) == OK) |
17292
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
202 { |
17320
33dccaafb214
patch 8.1.1659: popup window "mousemoved" values not correct
Bram Moolenaar <Bram@vim.org>
parents:
17318
diff
changeset
|
203 // convert text column to mouse column |
33dccaafb214
patch 8.1.1659: popup window "mousemoved" values not correct
Bram Moolenaar <Bram@vim.org>
parents:
17318
diff
changeset
|
204 pos.col = col; |
33dccaafb214
patch 8.1.1659: popup window "mousemoved" values not correct
Bram Moolenaar <Bram@vim.org>
parents:
17318
diff
changeset
|
205 pos.coladd = 0; |
33dccaafb214
patch 8.1.1659: popup window "mousemoved" values not correct
Bram Moolenaar <Bram@vim.org>
parents:
17318
diff
changeset
|
206 getvcol(textwp, &pos, &mcol, NULL, NULL); |
33dccaafb214
patch 8.1.1659: popup window "mousemoved" values not correct
Bram Moolenaar <Bram@vim.org>
parents:
17318
diff
changeset
|
207 wp->w_popup_mouse_mincol = mcol; |
33dccaafb214
patch 8.1.1659: popup window "mousemoved" values not correct
Bram Moolenaar <Bram@vim.org>
parents:
17318
diff
changeset
|
208 |
17328
12c1f01b304e
patch 8.1.1663: compiler warning for using size_t
Bram Moolenaar <Bram@vim.org>
parents:
17320
diff
changeset
|
209 pos.col = col + (colnr_T)STRLEN(text) - 1; |
17320
33dccaafb214
patch 8.1.1659: popup window "mousemoved" values not correct
Bram Moolenaar <Bram@vim.org>
parents:
17318
diff
changeset
|
210 getvcol(textwp, &pos, NULL, NULL, &mcol); |
33dccaafb214
patch 8.1.1659: popup window "mousemoved" values not correct
Bram Moolenaar <Bram@vim.org>
parents:
17318
diff
changeset
|
211 wp->w_popup_mouse_maxcol = mcol; |
17292
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
212 vim_free(text); |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
213 } |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
214 } |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
215 |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
216 /* |
17051
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
217 * Return TRUE if "row"/"col" is on the border of the popup. |
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
218 * The values are relative to the top-left corner. |
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
219 */ |
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
220 int |
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
221 popup_on_border(win_T *wp, int row, int col) |
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
222 { |
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
223 return (row == 0 && wp->w_popup_border[0] > 0) |
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
224 || (row == popup_height(wp) - 1 && wp->w_popup_border[2] > 0) |
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
225 || (col == 0 && wp->w_popup_border[3] > 0) |
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
226 || (col == popup_width(wp) - 1 && wp->w_popup_border[1] > 0); |
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
227 } |
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
228 |
17219
5169811b3044
patch 8.1.1609: the user cannot easily close a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17216
diff
changeset
|
229 /* |
17847
bdddd215bf09
patch 8.1.1920: cannot always close a popup when filter consumes all events
Bram Moolenaar <Bram@vim.org>
parents:
17845
diff
changeset
|
230 * Return TRUE and close the popup if "row"/"col" is on the "X" button of the |
bdddd215bf09
patch 8.1.1920: cannot always close a popup when filter consumes all events
Bram Moolenaar <Bram@vim.org>
parents:
17845
diff
changeset
|
231 * popup and w_popup_close is POPCLOSE_BUTTON. |
17219
5169811b3044
patch 8.1.1609: the user cannot easily close a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17216
diff
changeset
|
232 * The values are relative to the top-left corner. |
17847
bdddd215bf09
patch 8.1.1920: cannot always close a popup when filter consumes all events
Bram Moolenaar <Bram@vim.org>
parents:
17845
diff
changeset
|
233 * Caller should check the left mouse button was clicked. |
bdddd215bf09
patch 8.1.1920: cannot always close a popup when filter consumes all events
Bram Moolenaar <Bram@vim.org>
parents:
17845
diff
changeset
|
234 * Return TRUE if the popup was closed. |
17219
5169811b3044
patch 8.1.1609: the user cannot easily close a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17216
diff
changeset
|
235 */ |
5169811b3044
patch 8.1.1609: the user cannot easily close a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17216
diff
changeset
|
236 int |
17847
bdddd215bf09
patch 8.1.1920: cannot always close a popup when filter consumes all events
Bram Moolenaar <Bram@vim.org>
parents:
17845
diff
changeset
|
237 popup_close_if_on_X(win_T *wp, int row, int col) |
17219
5169811b3044
patch 8.1.1609: the user cannot easily close a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17216
diff
changeset
|
238 { |
17847
bdddd215bf09
patch 8.1.1920: cannot always close a popup when filter consumes all events
Bram Moolenaar <Bram@vim.org>
parents:
17845
diff
changeset
|
239 if (wp->w_popup_close == POPCLOSE_BUTTON |
bdddd215bf09
patch 8.1.1920: cannot always close a popup when filter consumes all events
Bram Moolenaar <Bram@vim.org>
parents:
17845
diff
changeset
|
240 && row == 0 && col == popup_width(wp) - 1) |
bdddd215bf09
patch 8.1.1920: cannot always close a popup when filter consumes all events
Bram Moolenaar <Bram@vim.org>
parents:
17845
diff
changeset
|
241 { |
bdddd215bf09
patch 8.1.1920: cannot always close a popup when filter consumes all events
Bram Moolenaar <Bram@vim.org>
parents:
17845
diff
changeset
|
242 popup_close_for_mouse_click(wp); |
bdddd215bf09
patch 8.1.1920: cannot always close a popup when filter consumes all events
Bram Moolenaar <Bram@vim.org>
parents:
17845
diff
changeset
|
243 return TRUE; |
bdddd215bf09
patch 8.1.1920: cannot always close a popup when filter consumes all events
Bram Moolenaar <Bram@vim.org>
parents:
17845
diff
changeset
|
244 } |
bdddd215bf09
patch 8.1.1920: cannot always close a popup when filter consumes all events
Bram Moolenaar <Bram@vim.org>
parents:
17845
diff
changeset
|
245 return FALSE; |
17219
5169811b3044
patch 8.1.1609: the user cannot easily close a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17216
diff
changeset
|
246 } |
5169811b3044
patch 8.1.1609: the user cannot easily close a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17216
diff
changeset
|
247 |
17051
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
248 // Values set when dragging a popup window starts. |
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
249 static int drag_start_row; |
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
250 static int drag_start_col; |
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
251 static int drag_start_wantline; |
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
252 static int drag_start_wantcol; |
17580
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
253 static int drag_on_resize_handle; |
17051
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
254 |
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
255 /* |
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
256 * Mouse down on border of popup window: start dragging it. |
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
257 * Uses mouse_col and mouse_row. |
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
258 */ |
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
259 void |
17580
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
260 popup_start_drag(win_T *wp, int row, int col) |
17051
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
261 { |
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
262 drag_start_row = mouse_row; |
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
263 drag_start_col = mouse_col; |
18432
ee8db42dacf6
patch 8.1.2210: using negative offset for popup_create() does not work
Bram Moolenaar <Bram@vim.org>
parents:
18398
diff
changeset
|
264 if (wp->w_wantline <= 0) |
17051
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
265 drag_start_wantline = wp->w_winrow + 1; |
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
266 else |
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
267 drag_start_wantline = wp->w_wantline; |
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
268 if (wp->w_wantcol == 0) |
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
269 drag_start_wantcol = wp->w_wincol + 1; |
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
270 else |
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
271 drag_start_wantcol = wp->w_wantcol; |
17097
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
272 |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
273 // Stop centering the popup |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
274 if (wp->w_popup_pos == POPPOS_CENTER) |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
275 wp->w_popup_pos = POPPOS_TOPLEFT; |
17580
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
276 |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
277 drag_on_resize_handle = wp->w_popup_border[1] > 0 |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
278 && wp->w_popup_border[2] > 0 |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
279 && row == popup_height(wp) - 1 |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
280 && col == popup_width(wp) - 1; |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
281 |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
282 if (wp->w_popup_pos != POPPOS_TOPLEFT && drag_on_resize_handle) |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
283 { |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
284 if (wp->w_popup_pos == POPPOS_TOPRIGHT |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
285 || wp->w_popup_pos == POPPOS_BOTRIGHT) |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
286 wp->w_wantcol = wp->w_wincol + 1; |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
287 if (wp->w_popup_pos == POPPOS_BOTLEFT) |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
288 wp->w_wantline = wp->w_winrow + 1; |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
289 wp->w_popup_pos = POPPOS_TOPLEFT; |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
290 } |
17051
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
291 } |
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
292 |
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
293 /* |
17580
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
294 * Mouse moved while dragging a popup window: adjust the window popup position |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
295 * or resize. |
17051
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
296 */ |
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
297 void |
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
298 popup_drag(win_T *wp) |
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
299 { |
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
300 // The popup may be closed before dragging stops. |
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
301 if (!win_valid_popup(wp)) |
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
302 return; |
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
303 |
17580
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
304 if ((wp->w_popup_flags & POPF_RESIZE) && drag_on_resize_handle) |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
305 { |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
306 int width_inc = mouse_col - drag_start_col; |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
307 int height_inc = mouse_row - drag_start_row; |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
308 |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
309 if (width_inc != 0) |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
310 { |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
311 int width = wp->w_width + width_inc; |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
312 |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
313 if (width < 1) |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
314 width = 1; |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
315 wp->w_minwidth = width; |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
316 wp->w_maxwidth = width; |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
317 drag_start_col = mouse_col; |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
318 } |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
319 |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
320 if (height_inc != 0) |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
321 { |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
322 int height = wp->w_height + height_inc; |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
323 |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
324 if (height < 1) |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
325 height = 1; |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
326 wp->w_minheight = height; |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
327 wp->w_maxheight = height; |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
328 drag_start_row = mouse_row; |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
329 } |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
330 |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
331 popup_adjust_position(wp); |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
332 return; |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
333 } |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
334 |
26332
8b7f01b39d79
patch 8.2.3697: cannot drag a popup without a border
Bram Moolenaar <Bram@vim.org>
parents:
26266
diff
changeset
|
335 if (!(wp->w_popup_flags & (POPF_DRAG | POPF_DRAGALL))) |
17580
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
336 return; |
17051
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
337 wp->w_wantline = drag_start_wantline + (mouse_row - drag_start_row); |
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
338 if (wp->w_wantline < 1) |
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
339 wp->w_wantline = 1; |
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
340 if (wp->w_wantline > Rows) |
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
341 wp->w_wantline = Rows; |
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
342 wp->w_wantcol = drag_start_wantcol + (mouse_col - drag_start_col); |
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
343 if (wp->w_wantcol < 1) |
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
344 wp->w_wantcol = 1; |
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
345 if (wp->w_wantcol > Columns) |
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
346 wp->w_wantcol = Columns; |
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
347 |
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
348 popup_adjust_position(wp); |
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
349 } |
17045
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
350 |
17216
11f3cf51d43b
patch 8.1.1608: the evalfunc.c file is too big
Bram Moolenaar <Bram@vim.org>
parents:
17206
diff
changeset
|
351 /* |
11f3cf51d43b
patch 8.1.1608: the evalfunc.c file is too big
Bram Moolenaar <Bram@vim.org>
parents:
17206
diff
changeset
|
352 * Set w_firstline to match the current "wp->w_topline". |
11f3cf51d43b
patch 8.1.1608: the evalfunc.c file is too big
Bram Moolenaar <Bram@vim.org>
parents:
17206
diff
changeset
|
353 */ |
11f3cf51d43b
patch 8.1.1608: the evalfunc.c file is too big
Bram Moolenaar <Bram@vim.org>
parents:
17206
diff
changeset
|
354 void |
11f3cf51d43b
patch 8.1.1608: the evalfunc.c file is too big
Bram Moolenaar <Bram@vim.org>
parents:
17206
diff
changeset
|
355 popup_set_firstline(win_T *wp) |
11f3cf51d43b
patch 8.1.1608: the evalfunc.c file is too big
Bram Moolenaar <Bram@vim.org>
parents:
17206
diff
changeset
|
356 { |
11f3cf51d43b
patch 8.1.1608: the evalfunc.c file is too big
Bram Moolenaar <Bram@vim.org>
parents:
17206
diff
changeset
|
357 int height = wp->w_height; |
11f3cf51d43b
patch 8.1.1608: the evalfunc.c file is too big
Bram Moolenaar <Bram@vim.org>
parents:
17206
diff
changeset
|
358 |
11f3cf51d43b
patch 8.1.1608: the evalfunc.c file is too big
Bram Moolenaar <Bram@vim.org>
parents:
17206
diff
changeset
|
359 wp->w_firstline = wp->w_topline; |
11f3cf51d43b
patch 8.1.1608: the evalfunc.c file is too big
Bram Moolenaar <Bram@vim.org>
parents:
17206
diff
changeset
|
360 popup_adjust_position(wp); |
11f3cf51d43b
patch 8.1.1608: the evalfunc.c file is too big
Bram Moolenaar <Bram@vim.org>
parents:
17206
diff
changeset
|
361 |
11f3cf51d43b
patch 8.1.1608: the evalfunc.c file is too big
Bram Moolenaar <Bram@vim.org>
parents:
17206
diff
changeset
|
362 // we don't want the popup to get smaller, decrement the first line |
11f3cf51d43b
patch 8.1.1608: the evalfunc.c file is too big
Bram Moolenaar <Bram@vim.org>
parents:
17206
diff
changeset
|
363 // until it doesn't |
11f3cf51d43b
patch 8.1.1608: the evalfunc.c file is too big
Bram Moolenaar <Bram@vim.org>
parents:
17206
diff
changeset
|
364 while (wp->w_firstline > 1 && wp->w_height < height) |
11f3cf51d43b
patch 8.1.1608: the evalfunc.c file is too big
Bram Moolenaar <Bram@vim.org>
parents:
17206
diff
changeset
|
365 { |
11f3cf51d43b
patch 8.1.1608: the evalfunc.c file is too big
Bram Moolenaar <Bram@vim.org>
parents:
17206
diff
changeset
|
366 --wp->w_firstline; |
11f3cf51d43b
patch 8.1.1608: the evalfunc.c file is too big
Bram Moolenaar <Bram@vim.org>
parents:
17206
diff
changeset
|
367 popup_adjust_position(wp); |
11f3cf51d43b
patch 8.1.1608: the evalfunc.c file is too big
Bram Moolenaar <Bram@vim.org>
parents:
17206
diff
changeset
|
368 } |
11f3cf51d43b
patch 8.1.1608: the evalfunc.c file is too big
Bram Moolenaar <Bram@vim.org>
parents:
17206
diff
changeset
|
369 } |
11f3cf51d43b
patch 8.1.1608: the evalfunc.c file is too big
Bram Moolenaar <Bram@vim.org>
parents:
17206
diff
changeset
|
370 |
11f3cf51d43b
patch 8.1.1608: the evalfunc.c file is too big
Bram Moolenaar <Bram@vim.org>
parents:
17206
diff
changeset
|
371 /* |
17578
696030820746
patch 8.1.1786: double click in popup scrollbar starts selection
Bram Moolenaar <Bram@vim.org>
parents:
17563
diff
changeset
|
372 * Return TRUE if the position is in the popup window scrollbar. |
696030820746
patch 8.1.1786: double click in popup scrollbar starts selection
Bram Moolenaar <Bram@vim.org>
parents:
17563
diff
changeset
|
373 */ |
696030820746
patch 8.1.1786: double click in popup scrollbar starts selection
Bram Moolenaar <Bram@vim.org>
parents:
17563
diff
changeset
|
374 int |
696030820746
patch 8.1.1786: double click in popup scrollbar starts selection
Bram Moolenaar <Bram@vim.org>
parents:
17563
diff
changeset
|
375 popup_is_in_scrollbar(win_T *wp, int row, int col) |
696030820746
patch 8.1.1786: double click in popup scrollbar starts selection
Bram Moolenaar <Bram@vim.org>
parents:
17563
diff
changeset
|
376 { |
696030820746
patch 8.1.1786: double click in popup scrollbar starts selection
Bram Moolenaar <Bram@vim.org>
parents:
17563
diff
changeset
|
377 return wp->w_has_scrollbar |
696030820746
patch 8.1.1786: double click in popup scrollbar starts selection
Bram Moolenaar <Bram@vim.org>
parents:
17563
diff
changeset
|
378 && row >= wp->w_popup_border[0] |
696030820746
patch 8.1.1786: double click in popup scrollbar starts selection
Bram Moolenaar <Bram@vim.org>
parents:
17563
diff
changeset
|
379 && row < popup_height(wp) - wp->w_popup_border[2] |
696030820746
patch 8.1.1786: double click in popup scrollbar starts selection
Bram Moolenaar <Bram@vim.org>
parents:
17563
diff
changeset
|
380 && col == popup_width(wp) - wp->w_popup_border[1] - 1; |
696030820746
patch 8.1.1786: double click in popup scrollbar starts selection
Bram Moolenaar <Bram@vim.org>
parents:
17563
diff
changeset
|
381 } |
696030820746
patch 8.1.1786: double click in popup scrollbar starts selection
Bram Moolenaar <Bram@vim.org>
parents:
17563
diff
changeset
|
382 |
696030820746
patch 8.1.1786: double click in popup scrollbar starts selection
Bram Moolenaar <Bram@vim.org>
parents:
17563
diff
changeset
|
383 |
696030820746
patch 8.1.1786: double click in popup scrollbar starts selection
Bram Moolenaar <Bram@vim.org>
parents:
17563
diff
changeset
|
384 /* |
17216
11f3cf51d43b
patch 8.1.1608: the evalfunc.c file is too big
Bram Moolenaar <Bram@vim.org>
parents:
17206
diff
changeset
|
385 * Handle a click in a popup window, if it is in the scrollbar. |
11f3cf51d43b
patch 8.1.1608: the evalfunc.c file is too big
Bram Moolenaar <Bram@vim.org>
parents:
17206
diff
changeset
|
386 */ |
11f3cf51d43b
patch 8.1.1608: the evalfunc.c file is too big
Bram Moolenaar <Bram@vim.org>
parents:
17206
diff
changeset
|
387 void |
11f3cf51d43b
patch 8.1.1608: the evalfunc.c file is too big
Bram Moolenaar <Bram@vim.org>
parents:
17206
diff
changeset
|
388 popup_handle_scrollbar_click(win_T *wp, int row, int col) |
11f3cf51d43b
patch 8.1.1608: the evalfunc.c file is too big
Bram Moolenaar <Bram@vim.org>
parents:
17206
diff
changeset
|
389 { |
17578
696030820746
patch 8.1.1786: double click in popup scrollbar starts selection
Bram Moolenaar <Bram@vim.org>
parents:
17563
diff
changeset
|
390 if (popup_is_in_scrollbar(wp, row, col)) |
17216
11f3cf51d43b
patch 8.1.1608: the evalfunc.c file is too big
Bram Moolenaar <Bram@vim.org>
parents:
17206
diff
changeset
|
391 { |
29032
361b46a07f5e
patch 8.2.5038: a finished terminal in a popup window does not show scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
28778
diff
changeset
|
392 int height = popup_height(wp); |
361b46a07f5e
patch 8.2.5038: a finished terminal in a popup window does not show scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
28778
diff
changeset
|
393 int new_topline = wp->w_topline; |
361b46a07f5e
patch 8.2.5038: a finished terminal in a popup window does not show scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
28778
diff
changeset
|
394 |
17216
11f3cf51d43b
patch 8.1.1608: the evalfunc.c file is too big
Bram Moolenaar <Bram@vim.org>
parents:
17206
diff
changeset
|
395 if (row >= height / 2) |
11f3cf51d43b
patch 8.1.1608: the evalfunc.c file is too big
Bram Moolenaar <Bram@vim.org>
parents:
17206
diff
changeset
|
396 { |
11f3cf51d43b
patch 8.1.1608: the evalfunc.c file is too big
Bram Moolenaar <Bram@vim.org>
parents:
17206
diff
changeset
|
397 // Click in lower half, scroll down. |
11f3cf51d43b
patch 8.1.1608: the evalfunc.c file is too big
Bram Moolenaar <Bram@vim.org>
parents:
17206
diff
changeset
|
398 if (wp->w_topline < wp->w_buffer->b_ml.ml_line_count) |
29032
361b46a07f5e
patch 8.2.5038: a finished terminal in a popup window does not show scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
28778
diff
changeset
|
399 ++new_topline; |
17216
11f3cf51d43b
patch 8.1.1608: the evalfunc.c file is too big
Bram Moolenaar <Bram@vim.org>
parents:
17206
diff
changeset
|
400 } |
11f3cf51d43b
patch 8.1.1608: the evalfunc.c file is too big
Bram Moolenaar <Bram@vim.org>
parents:
17206
diff
changeset
|
401 else if (wp->w_topline > 1) |
11f3cf51d43b
patch 8.1.1608: the evalfunc.c file is too big
Bram Moolenaar <Bram@vim.org>
parents:
17206
diff
changeset
|
402 // click on upper half, scroll up. |
29032
361b46a07f5e
patch 8.2.5038: a finished terminal in a popup window does not show scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
28778
diff
changeset
|
403 --new_topline; |
361b46a07f5e
patch 8.2.5038: a finished terminal in a popup window does not show scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
28778
diff
changeset
|
404 if (new_topline != wp->w_topline) |
17216
11f3cf51d43b
patch 8.1.1608: the evalfunc.c file is too big
Bram Moolenaar <Bram@vim.org>
parents:
17206
diff
changeset
|
405 { |
29032
361b46a07f5e
patch 8.2.5038: a finished terminal in a popup window does not show scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
28778
diff
changeset
|
406 set_topline(wp, new_topline); |
361b46a07f5e
patch 8.2.5038: a finished terminal in a popup window does not show scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
28778
diff
changeset
|
407 if (wp == curwin) |
361b46a07f5e
patch 8.2.5038: a finished terminal in a popup window does not show scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
28778
diff
changeset
|
408 { |
361b46a07f5e
patch 8.2.5038: a finished terminal in a popup window does not show scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
28778
diff
changeset
|
409 if (wp->w_cursor.lnum < wp->w_topline) |
361b46a07f5e
patch 8.2.5038: a finished terminal in a popup window does not show scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
28778
diff
changeset
|
410 { |
361b46a07f5e
patch 8.2.5038: a finished terminal in a popup window does not show scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
28778
diff
changeset
|
411 wp->w_cursor.lnum = wp->w_topline; |
361b46a07f5e
patch 8.2.5038: a finished terminal in a popup window does not show scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
28778
diff
changeset
|
412 check_cursor(); |
361b46a07f5e
patch 8.2.5038: a finished terminal in a popup window does not show scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
28778
diff
changeset
|
413 } |
361b46a07f5e
patch 8.2.5038: a finished terminal in a popup window does not show scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
28778
diff
changeset
|
414 else if (wp->w_cursor.lnum >= wp->w_botline) |
361b46a07f5e
patch 8.2.5038: a finished terminal in a popup window does not show scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
28778
diff
changeset
|
415 { |
361b46a07f5e
patch 8.2.5038: a finished terminal in a popup window does not show scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
28778
diff
changeset
|
416 wp->w_cursor.lnum = wp->w_botline - 1; |
361b46a07f5e
patch 8.2.5038: a finished terminal in a popup window does not show scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
28778
diff
changeset
|
417 check_cursor(); |
361b46a07f5e
patch 8.2.5038: a finished terminal in a popup window does not show scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
28778
diff
changeset
|
418 } |
361b46a07f5e
patch 8.2.5038: a finished terminal in a popup window does not show scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
28778
diff
changeset
|
419 } |
17216
11f3cf51d43b
patch 8.1.1608: the evalfunc.c file is too big
Bram Moolenaar <Bram@vim.org>
parents:
17206
diff
changeset
|
420 popup_set_firstline(wp); |
29732
89e1d67814a9
patch 9.0.0206: redraw flags are not named specifically
Bram Moolenaar <Bram@vim.org>
parents:
29660
diff
changeset
|
421 redraw_win_later(wp, UPD_NOT_VALID); |
17216
11f3cf51d43b
patch 8.1.1608: the evalfunc.c file is too big
Bram Moolenaar <Bram@vim.org>
parents:
17206
diff
changeset
|
422 } |
11f3cf51d43b
patch 8.1.1608: the evalfunc.c file is too big
Bram Moolenaar <Bram@vim.org>
parents:
17206
diff
changeset
|
423 } |
11f3cf51d43b
patch 8.1.1608: the evalfunc.c file is too big
Bram Moolenaar <Bram@vim.org>
parents:
17206
diff
changeset
|
424 } |
11f3cf51d43b
patch 8.1.1608: the evalfunc.c file is too big
Bram Moolenaar <Bram@vim.org>
parents:
17206
diff
changeset
|
425 |
17045
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
426 #if defined(FEAT_TIMERS) |
29900
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
427 /* |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
428 * Add a timer to "wp" with "time". |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
429 * If "close" is true use popup_close(), otherwise popup_hide(). |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
430 */ |
17045
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
431 static void |
29900
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
432 popup_add_timeout(win_T *wp, int time, int close) |
17045
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
433 { |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
434 char_u cbbuf[50]; |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
435 char_u *ptr = cbbuf; |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
436 typval_T tv; |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
437 |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
438 vim_snprintf((char *)cbbuf, sizeof(cbbuf), |
29900
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
439 close ? "(_) => popup_close(%d)" : "(_) => popup_hide(%d)", |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
440 wp->w_id); |
25300
e56c8dc1a534
patch 8.2.3187: Vim9: popup timer callback is not compiled
Bram Moolenaar <Bram@vim.org>
parents:
25252
diff
changeset
|
441 if (get_lambda_tv_and_compile(&ptr, &tv, FALSE, &EVALARG_EVALUATE) == OK) |
17045
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
442 { |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
443 wp->w_popup_timer = create_timer(time, 0); |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
444 wp->w_popup_timer->tr_callback = get_callback(&tv); |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
445 clear_tv(&tv); |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
446 } |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
447 } |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
448 #endif |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
449 |
18558
e5ef5d820b5b
patch 8.1.2273: wrong default when "pos" is changed with popup_atcursor()
Bram Moolenaar <Bram@vim.org>
parents:
18544
diff
changeset
|
450 static poppos_T |
e5ef5d820b5b
patch 8.1.2273: wrong default when "pos" is changed with popup_atcursor()
Bram Moolenaar <Bram@vim.org>
parents:
18544
diff
changeset
|
451 get_pos_entry(dict_T *d, int give_error) |
e5ef5d820b5b
patch 8.1.2273: wrong default when "pos" is changed with popup_atcursor()
Bram Moolenaar <Bram@vim.org>
parents:
18544
diff
changeset
|
452 { |
29442
827d9f2b7a71
patch 9.0.0063: too many type casts for dict_get functions
Bram Moolenaar <Bram@vim.org>
parents:
29239
diff
changeset
|
453 char_u *str = dict_get_string(d, "pos", FALSE); |
18558
e5ef5d820b5b
patch 8.1.2273: wrong default when "pos" is changed with popup_atcursor()
Bram Moolenaar <Bram@vim.org>
parents:
18544
diff
changeset
|
454 int nr; |
e5ef5d820b5b
patch 8.1.2273: wrong default when "pos" is changed with popup_atcursor()
Bram Moolenaar <Bram@vim.org>
parents:
18544
diff
changeset
|
455 |
e5ef5d820b5b
patch 8.1.2273: wrong default when "pos" is changed with popup_atcursor()
Bram Moolenaar <Bram@vim.org>
parents:
18544
diff
changeset
|
456 if (str == NULL) |
e5ef5d820b5b
patch 8.1.2273: wrong default when "pos" is changed with popup_atcursor()
Bram Moolenaar <Bram@vim.org>
parents:
18544
diff
changeset
|
457 return POPPOS_NONE; |
e5ef5d820b5b
patch 8.1.2273: wrong default when "pos" is changed with popup_atcursor()
Bram Moolenaar <Bram@vim.org>
parents:
18544
diff
changeset
|
458 |
24768
7334bf933510
patch 8.2.2922: computing array length is done in various ways
Bram Moolenaar <Bram@vim.org>
parents:
24709
diff
changeset
|
459 for (nr = 0; nr < (int)ARRAY_LENGTH(poppos_entries); ++nr) |
18558
e5ef5d820b5b
patch 8.1.2273: wrong default when "pos" is changed with popup_atcursor()
Bram Moolenaar <Bram@vim.org>
parents:
18544
diff
changeset
|
460 if (STRCMP(str, poppos_entries[nr].pp_name) == 0) |
e5ef5d820b5b
patch 8.1.2273: wrong default when "pos" is changed with popup_atcursor()
Bram Moolenaar <Bram@vim.org>
parents:
18544
diff
changeset
|
461 return poppos_entries[nr].pp_val; |
e5ef5d820b5b
patch 8.1.2273: wrong default when "pos" is changed with popup_atcursor()
Bram Moolenaar <Bram@vim.org>
parents:
18544
diff
changeset
|
462 |
e5ef5d820b5b
patch 8.1.2273: wrong default when "pos" is changed with popup_atcursor()
Bram Moolenaar <Bram@vim.org>
parents:
18544
diff
changeset
|
463 if (give_error) |
26865
bce848ec8b1b
patch 8.2.3961: error messages are spread out
Bram Moolenaar <Bram@vim.org>
parents:
26690
diff
changeset
|
464 semsg(_(e_invalid_argument_str), str); |
18558
e5ef5d820b5b
patch 8.1.2273: wrong default when "pos" is changed with popup_atcursor()
Bram Moolenaar <Bram@vim.org>
parents:
18544
diff
changeset
|
465 return POPPOS_NONE; |
e5ef5d820b5b
patch 8.1.2273: wrong default when "pos" is changed with popup_atcursor()
Bram Moolenaar <Bram@vim.org>
parents:
18544
diff
changeset
|
466 } |
e5ef5d820b5b
patch 8.1.2273: wrong default when "pos" is changed with popup_atcursor()
Bram Moolenaar <Bram@vim.org>
parents:
18544
diff
changeset
|
467 |
16908
df06694b761b
patch 8.1.1455: popup_atcursor() not completely implemented
Bram Moolenaar <Bram@vim.org>
parents:
16904
diff
changeset
|
468 /* |
17123
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
469 * Shared between popup_create() and f_popup_move(). |
16778
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
470 */ |
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
471 static void |
17123
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
472 apply_move_options(win_T *wp, dict_T *d) |
16778
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
473 { |
17863
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
474 int nr; |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
475 char_u *str; |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
476 dictitem_T *di; |
17123
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
477 |
29442
827d9f2b7a71
patch 9.0.0063: too many type casts for dict_get functions
Bram Moolenaar <Bram@vim.org>
parents:
29239
diff
changeset
|
478 if ((nr = dict_get_number_def(d, "minwidth", -1)) >= 0) |
17123
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
479 wp->w_minwidth = nr; |
29442
827d9f2b7a71
patch 9.0.0063: too many type casts for dict_get functions
Bram Moolenaar <Bram@vim.org>
parents:
29239
diff
changeset
|
480 if ((nr = dict_get_number_def(d, "minheight", -1)) >= 0) |
17123
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
481 wp->w_minheight = nr; |
29442
827d9f2b7a71
patch 9.0.0063: too many type casts for dict_get functions
Bram Moolenaar <Bram@vim.org>
parents:
29239
diff
changeset
|
482 if ((nr = dict_get_number_def(d, "maxwidth", -1)) >= 0) |
17123
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
483 wp->w_maxwidth = nr; |
29442
827d9f2b7a71
patch 9.0.0063: too many type casts for dict_get functions
Bram Moolenaar <Bram@vim.org>
parents:
29239
diff
changeset
|
484 if ((nr = dict_get_number_def(d, "maxheight", -1)) >= 0) |
17123
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
485 wp->w_maxheight = nr; |
17863
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
486 |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
487 nr = popup_options_one(d, (char_u *)"line"); |
17879
5d5b460926ca
patch 8.1.1936: not enough tests for text property popup window
Bram Moolenaar <Bram@vim.org>
parents:
17875
diff
changeset
|
488 if (nr != MAXCOL) |
17863
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
489 wp->w_wantline = nr; |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
490 nr = popup_options_one(d, (char_u *)"col"); |
17879
5d5b460926ca
patch 8.1.1936: not enough tests for text property popup window
Bram Moolenaar <Bram@vim.org>
parents:
17875
diff
changeset
|
491 if (nr != MAXCOL) |
17863
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
492 wp->w_wantcol = nr; |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
493 |
21857
1f6dc5b953c4
patch 8.2.1478: Vim9: cannot use "true" for some popup options
Bram Moolenaar <Bram@vim.org>
parents:
21731
diff
changeset
|
494 |
29442
827d9f2b7a71
patch 9.0.0063: too many type casts for dict_get functions
Bram Moolenaar <Bram@vim.org>
parents:
29239
diff
changeset
|
495 nr = dict_get_bool(d, "fixed", -1); |
21857
1f6dc5b953c4
patch 8.2.1478: Vim9: cannot use "true" for some popup options
Bram Moolenaar <Bram@vim.org>
parents:
21731
diff
changeset
|
496 if (nr != -1) |
1f6dc5b953c4
patch 8.2.1478: Vim9: cannot use "true" for some popup options
Bram Moolenaar <Bram@vim.org>
parents:
21731
diff
changeset
|
497 wp->w_popup_fixed = nr != 0; |
17863
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
498 |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
499 { |
18558
e5ef5d820b5b
patch 8.1.2273: wrong default when "pos" is changed with popup_atcursor()
Bram Moolenaar <Bram@vim.org>
parents:
18544
diff
changeset
|
500 poppos_T ppt = get_pos_entry(d, TRUE); |
e5ef5d820b5b
patch 8.1.2273: wrong default when "pos" is changed with popup_atcursor()
Bram Moolenaar <Bram@vim.org>
parents:
18544
diff
changeset
|
501 |
e5ef5d820b5b
patch 8.1.2273: wrong default when "pos" is changed with popup_atcursor()
Bram Moolenaar <Bram@vim.org>
parents:
18544
diff
changeset
|
502 if (ppt != POPPOS_NONE) |
e5ef5d820b5b
patch 8.1.2273: wrong default when "pos" is changed with popup_atcursor()
Bram Moolenaar <Bram@vim.org>
parents:
18544
diff
changeset
|
503 wp->w_popup_pos = ppt; |
17863
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
504 } |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
505 |
29442
827d9f2b7a71
patch 9.0.0063: too many type casts for dict_get functions
Bram Moolenaar <Bram@vim.org>
parents:
29239
diff
changeset
|
506 str = dict_get_string(d, "textprop", FALSE); |
17863
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
507 if (str != NULL) |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
508 { |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
509 wp->w_popup_prop_type = 0; |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
510 if (*str != NUL) |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
511 { |
18629
15fe2bd478b0
patch 8.1.2307: positioning popup doesn't work for buffer-local textprop
Bram Moolenaar <Bram@vim.org>
parents:
18623
diff
changeset
|
512 wp->w_popup_prop_win = curwin; |
15fe2bd478b0
patch 8.1.2307: positioning popup doesn't work for buffer-local textprop
Bram Moolenaar <Bram@vim.org>
parents:
18623
diff
changeset
|
513 di = dict_find(d, (char_u *)"textpropwin", -1); |
15fe2bd478b0
patch 8.1.2307: positioning popup doesn't work for buffer-local textprop
Bram Moolenaar <Bram@vim.org>
parents:
18623
diff
changeset
|
514 if (di != NULL) |
15fe2bd478b0
patch 8.1.2307: positioning popup doesn't work for buffer-local textprop
Bram Moolenaar <Bram@vim.org>
parents:
18623
diff
changeset
|
515 { |
15fe2bd478b0
patch 8.1.2307: positioning popup doesn't work for buffer-local textprop
Bram Moolenaar <Bram@vim.org>
parents:
18623
diff
changeset
|
516 wp->w_popup_prop_win = find_win_by_nr_or_id(&di->di_tv); |
23859
12b446696927
patch 8.2.2471: popup_setoptions() does not set textprop in other tab
Bram Moolenaar <Bram@vim.org>
parents:
23857
diff
changeset
|
517 if (!win_valid_any_tab(wp->w_popup_prop_win)) |
18629
15fe2bd478b0
patch 8.1.2307: positioning popup doesn't work for buffer-local textprop
Bram Moolenaar <Bram@vim.org>
parents:
18623
diff
changeset
|
518 wp->w_popup_prop_win = curwin; |
15fe2bd478b0
patch 8.1.2307: positioning popup doesn't work for buffer-local textprop
Bram Moolenaar <Bram@vim.org>
parents:
18623
diff
changeset
|
519 } |
15fe2bd478b0
patch 8.1.2307: positioning popup doesn't work for buffer-local textprop
Bram Moolenaar <Bram@vim.org>
parents:
18623
diff
changeset
|
520 |
15fe2bd478b0
patch 8.1.2307: positioning popup doesn't work for buffer-local textprop
Bram Moolenaar <Bram@vim.org>
parents:
18623
diff
changeset
|
521 nr = find_prop_type_id(str, wp->w_popup_prop_win->w_buffer); |
17863
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
522 if (nr <= 0) |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
523 nr = find_prop_type_id(str, NULL); |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
524 if (nr <= 0) |
26865
bce848ec8b1b
patch 8.2.3961: error messages are spread out
Bram Moolenaar <Bram@vim.org>
parents:
26690
diff
changeset
|
525 semsg(_(e_invalid_argument_str), str); |
17863
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
526 else |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
527 wp->w_popup_prop_type = nr; |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
528 } |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
529 } |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
530 |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
531 di = dict_find(d, (char_u *)"textpropid", -1); |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
532 if (di != NULL) |
29442
827d9f2b7a71
patch 9.0.0063: too many type casts for dict_get functions
Bram Moolenaar <Bram@vim.org>
parents:
29239
diff
changeset
|
533 wp->w_popup_prop_id = dict_get_number(d, "textpropid"); |
17123
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
534 } |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
535 |
19241
c53dbbf3229b
patch 8.2.0179: still a few places where range() does not work
Bram Moolenaar <Bram@vim.org>
parents:
19166
diff
changeset
|
536 /* |
c53dbbf3229b
patch 8.2.0179: still a few places where range() does not work
Bram Moolenaar <Bram@vim.org>
parents:
19166
diff
changeset
|
537 * Handle "moved" and "mousemoved" arguments. |
c53dbbf3229b
patch 8.2.0179: still a few places where range() does not work
Bram Moolenaar <Bram@vim.org>
parents:
19166
diff
changeset
|
538 */ |
17202
4b40e8821f56
patch 8.1.1600: cannot specify highlighting for popup window scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
17200
diff
changeset
|
539 static void |
17292
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
540 handle_moved_argument(win_T *wp, dictitem_T *di, int mousemoved) |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
541 { |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
542 if (di->di_tv.v_type == VAR_STRING && di->di_tv.vval.v_string != NULL) |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
543 { |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
544 char_u *s = di->di_tv.vval.v_string; |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
545 int flags = 0; |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
546 |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
547 if (STRCMP(s, "word") == 0) |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
548 flags = FIND_IDENT | FIND_STRING; |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
549 else if (STRCMP(s, "WORD") == 0) |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
550 flags = FIND_STRING; |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
551 else if (STRCMP(s, "expr") == 0) |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
552 flags = FIND_IDENT | FIND_STRING | FIND_EVAL; |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
553 else if (STRCMP(s, "any") != 0) |
26865
bce848ec8b1b
patch 8.2.3961: error messages are spread out
Bram Moolenaar <Bram@vim.org>
parents:
26690
diff
changeset
|
554 semsg(_(e_invalid_argument_str), s); |
17292
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
555 if (flags != 0) |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
556 { |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
557 if (mousemoved) |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
558 set_mousemoved_columns(wp, flags); |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
559 else |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
560 set_moved_columns(wp, flags); |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
561 } |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
562 } |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
563 else if (di->di_tv.v_type == VAR_LIST |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
564 && di->di_tv.vval.v_list != NULL |
18398
21c25bee9df8
patch 8.1.2193: popup_setoptions(popup_getoptions()) does not work
Bram Moolenaar <Bram@vim.org>
parents:
18396
diff
changeset
|
565 && (di->di_tv.vval.v_list->lv_len == 2 |
21c25bee9df8
patch 8.1.2193: popup_setoptions(popup_getoptions()) does not work
Bram Moolenaar <Bram@vim.org>
parents:
18396
diff
changeset
|
566 || di->di_tv.vval.v_list->lv_len == 3)) |
17292
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
567 { |
18398
21c25bee9df8
patch 8.1.2193: popup_setoptions(popup_getoptions()) does not work
Bram Moolenaar <Bram@vim.org>
parents:
18396
diff
changeset
|
568 list_T *l = di->di_tv.vval.v_list; |
19241
c53dbbf3229b
patch 8.2.0179: still a few places where range() does not work
Bram Moolenaar <Bram@vim.org>
parents:
19166
diff
changeset
|
569 listitem_T *li; |
18398
21c25bee9df8
patch 8.1.2193: popup_setoptions(popup_getoptions()) does not work
Bram Moolenaar <Bram@vim.org>
parents:
18396
diff
changeset
|
570 int mincol; |
21c25bee9df8
patch 8.1.2193: popup_setoptions(popup_getoptions()) does not work
Bram Moolenaar <Bram@vim.org>
parents:
18396
diff
changeset
|
571 int maxcol; |
21c25bee9df8
patch 8.1.2193: popup_setoptions(popup_getoptions()) does not work
Bram Moolenaar <Bram@vim.org>
parents:
18396
diff
changeset
|
572 |
20392
4c317d8c1051
patch 8.2.0751: Vim9: performance can be improved
Bram Moolenaar <Bram@vim.org>
parents:
20386
diff
changeset
|
573 CHECK_LIST_MATERIALIZE(l); |
19241
c53dbbf3229b
patch 8.2.0179: still a few places where range() does not work
Bram Moolenaar <Bram@vim.org>
parents:
19166
diff
changeset
|
574 li = l->lv_first; |
c53dbbf3229b
patch 8.2.0179: still a few places where range() does not work
Bram Moolenaar <Bram@vim.org>
parents:
19166
diff
changeset
|
575 if (l->lv_len == 3) |
18398
21c25bee9df8
patch 8.1.2193: popup_setoptions(popup_getoptions()) does not work
Bram Moolenaar <Bram@vim.org>
parents:
18396
diff
changeset
|
576 { |
21c25bee9df8
patch 8.1.2193: popup_setoptions(popup_getoptions()) does not work
Bram Moolenaar <Bram@vim.org>
parents:
18396
diff
changeset
|
577 varnumber_T nr = tv_get_number(&l->lv_first->li_tv); |
21c25bee9df8
patch 8.1.2193: popup_setoptions(popup_getoptions()) does not work
Bram Moolenaar <Bram@vim.org>
parents:
18396
diff
changeset
|
578 |
21c25bee9df8
patch 8.1.2193: popup_setoptions(popup_getoptions()) does not work
Bram Moolenaar <Bram@vim.org>
parents:
18396
diff
changeset
|
579 // Three numbers, might be from popup_getoptions(). |
21c25bee9df8
patch 8.1.2193: popup_setoptions(popup_getoptions()) does not work
Bram Moolenaar <Bram@vim.org>
parents:
18396
diff
changeset
|
580 if (mousemoved) |
21c25bee9df8
patch 8.1.2193: popup_setoptions(popup_getoptions()) does not work
Bram Moolenaar <Bram@vim.org>
parents:
18396
diff
changeset
|
581 wp->w_popup_mouse_row = nr; |
21c25bee9df8
patch 8.1.2193: popup_setoptions(popup_getoptions()) does not work
Bram Moolenaar <Bram@vim.org>
parents:
18396
diff
changeset
|
582 else |
21c25bee9df8
patch 8.1.2193: popup_setoptions(popup_getoptions()) does not work
Bram Moolenaar <Bram@vim.org>
parents:
18396
diff
changeset
|
583 wp->w_popup_lnum = nr; |
21c25bee9df8
patch 8.1.2193: popup_setoptions(popup_getoptions()) does not work
Bram Moolenaar <Bram@vim.org>
parents:
18396
diff
changeset
|
584 li = li->li_next; |
18558
e5ef5d820b5b
patch 8.1.2273: wrong default when "pos" is changed with popup_atcursor()
Bram Moolenaar <Bram@vim.org>
parents:
18544
diff
changeset
|
585 if (nr == 0) |
e5ef5d820b5b
patch 8.1.2273: wrong default when "pos" is changed with popup_atcursor()
Bram Moolenaar <Bram@vim.org>
parents:
18544
diff
changeset
|
586 wp->w_popup_curwin = NULL; |
18398
21c25bee9df8
patch 8.1.2193: popup_setoptions(popup_getoptions()) does not work
Bram Moolenaar <Bram@vim.org>
parents:
18396
diff
changeset
|
587 } |
21c25bee9df8
patch 8.1.2193: popup_setoptions(popup_getoptions()) does not work
Bram Moolenaar <Bram@vim.org>
parents:
18396
diff
changeset
|
588 |
21c25bee9df8
patch 8.1.2193: popup_setoptions(popup_getoptions()) does not work
Bram Moolenaar <Bram@vim.org>
parents:
18396
diff
changeset
|
589 mincol = tv_get_number(&li->li_tv); |
21c25bee9df8
patch 8.1.2193: popup_setoptions(popup_getoptions()) does not work
Bram Moolenaar <Bram@vim.org>
parents:
18396
diff
changeset
|
590 maxcol = tv_get_number(&li->li_next->li_tv); |
17292
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
591 if (mousemoved) |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
592 { |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
593 wp->w_popup_mouse_mincol = mincol; |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
594 wp->w_popup_mouse_maxcol = maxcol; |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
595 } |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
596 else |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
597 { |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
598 wp->w_popup_mincol = mincol; |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
599 wp->w_popup_maxcol = maxcol; |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
600 } |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
601 } |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
602 else |
26865
bce848ec8b1b
patch 8.2.3961: error messages are spread out
Bram Moolenaar <Bram@vim.org>
parents:
26690
diff
changeset
|
603 semsg(_(e_invalid_argument_str), tv_get_string(&di->di_tv)); |
17292
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
604 } |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
605 |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
606 static void |
17202
4b40e8821f56
patch 8.1.1600: cannot specify highlighting for popup window scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
17200
diff
changeset
|
607 check_highlight(dict_T *dict, char *name, char_u **pval) |
4b40e8821f56
patch 8.1.1600: cannot specify highlighting for popup window scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
17200
diff
changeset
|
608 { |
4b40e8821f56
patch 8.1.1600: cannot specify highlighting for popup window scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
17200
diff
changeset
|
609 dictitem_T *di; |
4b40e8821f56
patch 8.1.1600: cannot specify highlighting for popup window scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
17200
diff
changeset
|
610 char_u *str; |
4b40e8821f56
patch 8.1.1600: cannot specify highlighting for popup window scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
17200
diff
changeset
|
611 |
4b40e8821f56
patch 8.1.1600: cannot specify highlighting for popup window scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
17200
diff
changeset
|
612 di = dict_find(dict, (char_u *)name, -1); |
4b40e8821f56
patch 8.1.1600: cannot specify highlighting for popup window scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
17200
diff
changeset
|
613 if (di != NULL) |
4b40e8821f56
patch 8.1.1600: cannot specify highlighting for popup window scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
17200
diff
changeset
|
614 { |
4b40e8821f56
patch 8.1.1600: cannot specify highlighting for popup window scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
17200
diff
changeset
|
615 if (di->di_tv.v_type != VAR_STRING) |
26865
bce848ec8b1b
patch 8.2.3961: error messages are spread out
Bram Moolenaar <Bram@vim.org>
parents:
26690
diff
changeset
|
616 semsg(_(e_invalid_value_for_argument_str), name); |
17202
4b40e8821f56
patch 8.1.1600: cannot specify highlighting for popup window scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
17200
diff
changeset
|
617 else |
4b40e8821f56
patch 8.1.1600: cannot specify highlighting for popup window scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
17200
diff
changeset
|
618 { |
4b40e8821f56
patch 8.1.1600: cannot specify highlighting for popup window scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
17200
diff
changeset
|
619 str = tv_get_string(&di->di_tv); |
4b40e8821f56
patch 8.1.1600: cannot specify highlighting for popup window scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
17200
diff
changeset
|
620 if (*str != NUL) |
4b40e8821f56
patch 8.1.1600: cannot specify highlighting for popup window scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
17200
diff
changeset
|
621 *pval = vim_strsave(str); |
4b40e8821f56
patch 8.1.1600: cannot specify highlighting for popup window scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
17200
diff
changeset
|
622 } |
4b40e8821f56
patch 8.1.1600: cannot specify highlighting for popup window scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
17200
diff
changeset
|
623 } |
4b40e8821f56
patch 8.1.1600: cannot specify highlighting for popup window scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
17200
diff
changeset
|
624 } |
4b40e8821f56
patch 8.1.1600: cannot specify highlighting for popup window scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
17200
diff
changeset
|
625 |
17123
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
626 /* |
18339
a776385eac9f
patch 8.1.2164: stuck when using "j" in a popupwin with popup_filter_menu
Bram Moolenaar <Bram@vim.org>
parents:
18239
diff
changeset
|
627 * Scroll to show the line with the cursor. |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
628 */ |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
629 static void |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
630 popup_show_curline(win_T *wp) |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
631 { |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
632 if (wp->w_cursor.lnum < wp->w_topline) |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
633 wp->w_topline = wp->w_cursor.lnum; |
18027
56032a704448
patch 8.1.2009: cursorline highlighting not updated in popup window
Bram Moolenaar <Bram@vim.org>
parents:
18004
diff
changeset
|
634 else if (wp->w_cursor.lnum >= wp->w_botline |
22403
3351d2cd3f1f
patch 8.2.1750: popup_setoptions() setting firstline fails if cursorline set
Bram Moolenaar <Bram@vim.org>
parents:
22377
diff
changeset
|
635 && (wp->w_valid & VALID_BOTLINE)) |
18027
56032a704448
patch 8.1.2009: cursorline highlighting not updated in popup window
Bram Moolenaar <Bram@vim.org>
parents:
18004
diff
changeset
|
636 { |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
637 wp->w_topline = wp->w_cursor.lnum - wp->w_height + 1; |
18027
56032a704448
patch 8.1.2009: cursorline highlighting not updated in popup window
Bram Moolenaar <Bram@vim.org>
parents:
18004
diff
changeset
|
638 if (wp->w_topline < 1) |
56032a704448
patch 8.1.2009: cursorline highlighting not updated in popup window
Bram Moolenaar <Bram@vim.org>
parents:
18004
diff
changeset
|
639 wp->w_topline = 1; |
56032a704448
patch 8.1.2009: cursorline highlighting not updated in popup window
Bram Moolenaar <Bram@vim.org>
parents:
18004
diff
changeset
|
640 else if (wp->w_topline > wp->w_buffer->b_ml.ml_line_count) |
56032a704448
patch 8.1.2009: cursorline highlighting not updated in popup window
Bram Moolenaar <Bram@vim.org>
parents:
18004
diff
changeset
|
641 wp->w_topline = wp->w_buffer->b_ml.ml_line_count; |
18339
a776385eac9f
patch 8.1.2164: stuck when using "j" in a popupwin with popup_filter_menu
Bram Moolenaar <Bram@vim.org>
parents:
18239
diff
changeset
|
642 while (wp->w_topline < wp->w_cursor.lnum |
a776385eac9f
patch 8.1.2164: stuck when using "j" in a popupwin with popup_filter_menu
Bram Moolenaar <Bram@vim.org>
parents:
18239
diff
changeset
|
643 && wp->w_topline < wp->w_buffer->b_ml.ml_line_count |
a776385eac9f
patch 8.1.2164: stuck when using "j" in a popupwin with popup_filter_menu
Bram Moolenaar <Bram@vim.org>
parents:
18239
diff
changeset
|
644 && plines_m_win(wp, wp->w_topline, wp->w_cursor.lnum) |
a776385eac9f
patch 8.1.2164: stuck when using "j" in a popupwin with popup_filter_menu
Bram Moolenaar <Bram@vim.org>
parents:
18239
diff
changeset
|
645 > wp->w_height) |
a776385eac9f
patch 8.1.2164: stuck when using "j" in a popupwin with popup_filter_menu
Bram Moolenaar <Bram@vim.org>
parents:
18239
diff
changeset
|
646 ++wp->w_topline; |
18027
56032a704448
patch 8.1.2009: cursorline highlighting not updated in popup window
Bram Moolenaar <Bram@vim.org>
parents:
18004
diff
changeset
|
647 } |
17440
a5874fdc8f3a
patch 8.1.1718: popup menu highlighting does not look good
Bram Moolenaar <Bram@vim.org>
parents:
17431
diff
changeset
|
648 |
22357
0e231e8e70f8
patch 8.2.1727: a popup created with "cursorline" will ignore "firstline"
Bram Moolenaar <Bram@vim.org>
parents:
22178
diff
changeset
|
649 // Don't let "firstline" cause a scroll. |
0e231e8e70f8
patch 8.2.1727: a popup created with "cursorline" will ignore "firstline"
Bram Moolenaar <Bram@vim.org>
parents:
22178
diff
changeset
|
650 if (wp->w_firstline > 0) |
0e231e8e70f8
patch 8.2.1727: a popup created with "cursorline" will ignore "firstline"
Bram Moolenaar <Bram@vim.org>
parents:
22178
diff
changeset
|
651 wp->w_firstline = wp->w_topline; |
17440
a5874fdc8f3a
patch 8.1.1718: popup menu highlighting does not look good
Bram Moolenaar <Bram@vim.org>
parents:
17431
diff
changeset
|
652 } |
a5874fdc8f3a
patch 8.1.1718: popup menu highlighting does not look good
Bram Moolenaar <Bram@vim.org>
parents:
17431
diff
changeset
|
653 |
a5874fdc8f3a
patch 8.1.1718: popup menu highlighting does not look good
Bram Moolenaar <Bram@vim.org>
parents:
17431
diff
changeset
|
654 /* |
a5874fdc8f3a
patch 8.1.1718: popup menu highlighting does not look good
Bram Moolenaar <Bram@vim.org>
parents:
17431
diff
changeset
|
655 * Get the sign group name for window "wp". |
a5874fdc8f3a
patch 8.1.1718: popup menu highlighting does not look good
Bram Moolenaar <Bram@vim.org>
parents:
17431
diff
changeset
|
656 * Returns a pointer to a static buffer, overwritten on the next call. |
a5874fdc8f3a
patch 8.1.1718: popup menu highlighting does not look good
Bram Moolenaar <Bram@vim.org>
parents:
17431
diff
changeset
|
657 */ |
a5874fdc8f3a
patch 8.1.1718: popup menu highlighting does not look good
Bram Moolenaar <Bram@vim.org>
parents:
17431
diff
changeset
|
658 static char_u * |
a5874fdc8f3a
patch 8.1.1718: popup menu highlighting does not look good
Bram Moolenaar <Bram@vim.org>
parents:
17431
diff
changeset
|
659 popup_get_sign_name(win_T *wp) |
a5874fdc8f3a
patch 8.1.1718: popup menu highlighting does not look good
Bram Moolenaar <Bram@vim.org>
parents:
17431
diff
changeset
|
660 { |
a5874fdc8f3a
patch 8.1.1718: popup menu highlighting does not look good
Bram Moolenaar <Bram@vim.org>
parents:
17431
diff
changeset
|
661 static char buf[30]; |
a5874fdc8f3a
patch 8.1.1718: popup menu highlighting does not look good
Bram Moolenaar <Bram@vim.org>
parents:
17431
diff
changeset
|
662 |
a5874fdc8f3a
patch 8.1.1718: popup menu highlighting does not look good
Bram Moolenaar <Bram@vim.org>
parents:
17431
diff
changeset
|
663 vim_snprintf(buf, sizeof(buf), "popup-%d", wp->w_id); |
a5874fdc8f3a
patch 8.1.1718: popup menu highlighting does not look good
Bram Moolenaar <Bram@vim.org>
parents:
17431
diff
changeset
|
664 return (char_u *)buf; |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
665 } |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
666 |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
667 /* |
17429
6e756ad5ef1a
patch 8.1.1713: highlighting cursor line only works with popup_menu()
Bram Moolenaar <Bram@vim.org>
parents:
17421
diff
changeset
|
668 * Highlight the line with the cursor. |
6e756ad5ef1a
patch 8.1.1713: highlighting cursor line only works with popup_menu()
Bram Moolenaar <Bram@vim.org>
parents:
17421
diff
changeset
|
669 * Also scrolls the text to put the cursor line in view. |
6e756ad5ef1a
patch 8.1.1713: highlighting cursor line only works with popup_menu()
Bram Moolenaar <Bram@vim.org>
parents:
17421
diff
changeset
|
670 */ |
6e756ad5ef1a
patch 8.1.1713: highlighting cursor line only works with popup_menu()
Bram Moolenaar <Bram@vim.org>
parents:
17421
diff
changeset
|
671 static void |
6e756ad5ef1a
patch 8.1.1713: highlighting cursor line only works with popup_menu()
Bram Moolenaar <Bram@vim.org>
parents:
17421
diff
changeset
|
672 popup_highlight_curline(win_T *wp) |
6e756ad5ef1a
patch 8.1.1713: highlighting cursor line only works with popup_menu()
Bram Moolenaar <Bram@vim.org>
parents:
17421
diff
changeset
|
673 { |
17440
a5874fdc8f3a
patch 8.1.1718: popup menu highlighting does not look good
Bram Moolenaar <Bram@vim.org>
parents:
17431
diff
changeset
|
674 int sign_id = 0; |
a5874fdc8f3a
patch 8.1.1718: popup menu highlighting does not look good
Bram Moolenaar <Bram@vim.org>
parents:
17431
diff
changeset
|
675 char_u *sign_name = popup_get_sign_name(wp); |
a5874fdc8f3a
patch 8.1.1718: popup menu highlighting does not look good
Bram Moolenaar <Bram@vim.org>
parents:
17431
diff
changeset
|
676 |
18744
b29d8a06e72c
patch 8.1.2362: cannot place signs in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
18685
diff
changeset
|
677 buf_delete_signs(wp->w_buffer, (char_u *)"PopUpMenu"); |
17429
6e756ad5ef1a
patch 8.1.1713: highlighting cursor line only works with popup_menu()
Bram Moolenaar <Bram@vim.org>
parents:
17421
diff
changeset
|
678 |
6e756ad5ef1a
patch 8.1.1713: highlighting cursor line only works with popup_menu()
Bram Moolenaar <Bram@vim.org>
parents:
17421
diff
changeset
|
679 if ((wp->w_popup_flags & POPF_CURSORLINE) != 0) |
6e756ad5ef1a
patch 8.1.1713: highlighting cursor line only works with popup_menu()
Bram Moolenaar <Bram@vim.org>
parents:
17421
diff
changeset
|
680 { |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
681 popup_show_curline(wp); |
17429
6e756ad5ef1a
patch 8.1.1713: highlighting cursor line only works with popup_menu()
Bram Moolenaar <Bram@vim.org>
parents:
17421
diff
changeset
|
682 |
17440
a5874fdc8f3a
patch 8.1.1718: popup menu highlighting does not look good
Bram Moolenaar <Bram@vim.org>
parents:
17431
diff
changeset
|
683 if (!sign_exists_by_name(sign_name)) |
a5874fdc8f3a
patch 8.1.1718: popup menu highlighting does not look good
Bram Moolenaar <Bram@vim.org>
parents:
17431
diff
changeset
|
684 { |
a5874fdc8f3a
patch 8.1.1718: popup menu highlighting does not look good
Bram Moolenaar <Bram@vim.org>
parents:
17431
diff
changeset
|
685 char *linehl = "PopupSelected"; |
a5874fdc8f3a
patch 8.1.1718: popup menu highlighting does not look good
Bram Moolenaar <Bram@vim.org>
parents:
17431
diff
changeset
|
686 |
a5874fdc8f3a
patch 8.1.1718: popup menu highlighting does not look good
Bram Moolenaar <Bram@vim.org>
parents:
17431
diff
changeset
|
687 if (syn_name2id((char_u *)linehl) == 0) |
a5874fdc8f3a
patch 8.1.1718: popup menu highlighting does not look good
Bram Moolenaar <Bram@vim.org>
parents:
17431
diff
changeset
|
688 linehl = "PmenuSel"; |
29900
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
689 sign_define_by_name(sign_name, NULL, (char_u *)linehl, |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
690 NULL, NULL, NULL, NULL); |
17440
a5874fdc8f3a
patch 8.1.1718: popup menu highlighting does not look good
Bram Moolenaar <Bram@vim.org>
parents:
17431
diff
changeset
|
691 } |
a5874fdc8f3a
patch 8.1.1718: popup menu highlighting does not look good
Bram Moolenaar <Bram@vim.org>
parents:
17431
diff
changeset
|
692 |
18744
b29d8a06e72c
patch 8.1.2362: cannot place signs in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
18685
diff
changeset
|
693 sign_place(&sign_id, (char_u *)"PopUpMenu", sign_name, |
17440
a5874fdc8f3a
patch 8.1.1718: popup menu highlighting does not look good
Bram Moolenaar <Bram@vim.org>
parents:
17431
diff
changeset
|
694 wp->w_buffer, wp->w_cursor.lnum, SIGN_DEF_PRIO); |
29732
89e1d67814a9
patch 9.0.0206: redraw flags are not named specifically
Bram Moolenaar <Bram@vim.org>
parents:
29660
diff
changeset
|
695 redraw_win_later(wp, UPD_NOT_VALID); |
17429
6e756ad5ef1a
patch 8.1.1713: highlighting cursor line only works with popup_menu()
Bram Moolenaar <Bram@vim.org>
parents:
17421
diff
changeset
|
696 } |
17440
a5874fdc8f3a
patch 8.1.1718: popup menu highlighting does not look good
Bram Moolenaar <Bram@vim.org>
parents:
17431
diff
changeset
|
697 else |
a5874fdc8f3a
patch 8.1.1718: popup menu highlighting does not look good
Bram Moolenaar <Bram@vim.org>
parents:
17431
diff
changeset
|
698 sign_undefine_by_name(sign_name, FALSE); |
18027
56032a704448
patch 8.1.2009: cursorline highlighting not updated in popup window
Bram Moolenaar <Bram@vim.org>
parents:
18004
diff
changeset
|
699 wp->w_popup_last_curline = wp->w_cursor.lnum; |
17429
6e756ad5ef1a
patch 8.1.1713: highlighting cursor line only works with popup_menu()
Bram Moolenaar <Bram@vim.org>
parents:
17421
diff
changeset
|
700 } |
6e756ad5ef1a
patch 8.1.1713: highlighting cursor line only works with popup_menu()
Bram Moolenaar <Bram@vim.org>
parents:
17421
diff
changeset
|
701 |
6e756ad5ef1a
patch 8.1.1713: highlighting cursor line only works with popup_menu()
Bram Moolenaar <Bram@vim.org>
parents:
17421
diff
changeset
|
702 /* |
17123
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
703 * Shared between popup_create() and f_popup_setoptions(). |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
704 */ |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
705 static void |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
706 apply_general_options(win_T *wp, dict_T *dict) |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
707 { |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
708 dictitem_T *di; |
16857
4de94f6161f2
patch 8.1.1430: popup window option "wrap" not supported
Bram Moolenaar <Bram@vim.org>
parents:
16855
diff
changeset
|
709 int nr; |
4de94f6161f2
patch 8.1.1430: popup window option "wrap" not supported
Bram Moolenaar <Bram@vim.org>
parents:
16855
diff
changeset
|
710 char_u *str; |
16800
12e3a3afdb6a
patch 8.1.1402: "timer" option of popup windows not supported
Bram Moolenaar <Bram@vim.org>
parents:
16796
diff
changeset
|
711 |
17123
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
712 // TODO: flip |
16817
069ee8dc8c8d
patch 8.1.1410: popup_move() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16813
diff
changeset
|
713 |
17123
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
714 di = dict_find(dict, (char_u *)"firstline", -1); |
17045
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
715 if (di != NULL) |
17905
fb773f73a4be
patch 8.1.1949: cannot scroll a popup window to the very bottom
Bram Moolenaar <Bram@vim.org>
parents:
17897
diff
changeset
|
716 { |
29442
827d9f2b7a71
patch 9.0.0063: too many type casts for dict_get functions
Bram Moolenaar <Bram@vim.org>
parents:
29239
diff
changeset
|
717 wp->w_firstline = dict_get_number(dict, "firstline"); |
17905
fb773f73a4be
patch 8.1.1949: cannot scroll a popup window to the very bottom
Bram Moolenaar <Bram@vim.org>
parents:
17897
diff
changeset
|
718 if (wp->w_firstline < 0) |
fb773f73a4be
patch 8.1.1949: cannot scroll a popup window to the very bottom
Bram Moolenaar <Bram@vim.org>
parents:
17897
diff
changeset
|
719 wp->w_firstline = -1; |
fb773f73a4be
patch 8.1.1949: cannot scroll a popup window to the very bottom
Bram Moolenaar <Bram@vim.org>
parents:
17897
diff
changeset
|
720 } |
16880
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
721 |
29442
827d9f2b7a71
patch 9.0.0063: too many type casts for dict_get functions
Bram Moolenaar <Bram@vim.org>
parents:
29239
diff
changeset
|
722 nr = dict_get_bool(dict, "scrollbar", -1); |
22429
909ce065e99a
patch 8.2.1763: Vim9: cannot use "true" for popup window scrollbar option
Bram Moolenaar <Bram@vim.org>
parents:
22403
diff
changeset
|
723 if (nr != -1) |
909ce065e99a
patch 8.2.1763: Vim9: cannot use "true" for popup window scrollbar option
Bram Moolenaar <Bram@vim.org>
parents:
22403
diff
changeset
|
724 wp->w_want_scrollbar = nr; |
17180
8581779aa16f
patch 8.1.1589: popup window does not indicate scroll position
Bram Moolenaar <Bram@vim.org>
parents:
17174
diff
changeset
|
725 |
29442
827d9f2b7a71
patch 9.0.0063: too many type casts for dict_get functions
Bram Moolenaar <Bram@vim.org>
parents:
29239
diff
changeset
|
726 str = dict_get_string(dict, "title", FALSE); |
17119
b439e096a011
patch 8.1.1559: popup window title property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17117
diff
changeset
|
727 if (str != NULL) |
b439e096a011
patch 8.1.1559: popup window title property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17117
diff
changeset
|
728 { |
b439e096a011
patch 8.1.1559: popup window title property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17117
diff
changeset
|
729 vim_free(wp->w_popup_title); |
b439e096a011
patch 8.1.1559: popup window title property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17117
diff
changeset
|
730 wp->w_popup_title = vim_strsave(str); |
b439e096a011
patch 8.1.1559: popup window title property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17117
diff
changeset
|
731 } |
b439e096a011
patch 8.1.1559: popup window title property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17117
diff
changeset
|
732 |
29442
827d9f2b7a71
patch 9.0.0063: too many type casts for dict_get functions
Bram Moolenaar <Bram@vim.org>
parents:
29239
diff
changeset
|
733 nr = dict_get_bool(dict, "wrap", -1); |
21857
1f6dc5b953c4
patch 8.2.1478: Vim9: cannot use "true" for some popup options
Bram Moolenaar <Bram@vim.org>
parents:
21731
diff
changeset
|
734 if (nr != -1) |
16857
4de94f6161f2
patch 8.1.1430: popup window option "wrap" not supported
Bram Moolenaar <Bram@vim.org>
parents:
16855
diff
changeset
|
735 wp->w_p_wrap = nr != 0; |
21857
1f6dc5b953c4
patch 8.2.1478: Vim9: cannot use "true" for some popup options
Bram Moolenaar <Bram@vim.org>
parents:
21731
diff
changeset
|
736 |
29442
827d9f2b7a71
patch 9.0.0063: too many type casts for dict_get functions
Bram Moolenaar <Bram@vim.org>
parents:
29239
diff
changeset
|
737 nr = dict_get_bool(dict, "drag", -1); |
21857
1f6dc5b953c4
patch 8.2.1478: Vim9: cannot use "true" for some popup options
Bram Moolenaar <Bram@vim.org>
parents:
21731
diff
changeset
|
738 if (nr != -1) |
17580
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
739 { |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
740 if (nr) |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
741 wp->w_popup_flags |= POPF_DRAG; |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
742 else |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
743 wp->w_popup_flags &= ~POPF_DRAG; |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
744 } |
29442
827d9f2b7a71
patch 9.0.0063: too many type casts for dict_get functions
Bram Moolenaar <Bram@vim.org>
parents:
29239
diff
changeset
|
745 nr = dict_get_bool(dict, "dragall", -1); |
26332
8b7f01b39d79
patch 8.2.3697: cannot drag a popup without a border
Bram Moolenaar <Bram@vim.org>
parents:
26266
diff
changeset
|
746 if (nr != -1) |
8b7f01b39d79
patch 8.2.3697: cannot drag a popup without a border
Bram Moolenaar <Bram@vim.org>
parents:
26266
diff
changeset
|
747 { |
8b7f01b39d79
patch 8.2.3697: cannot drag a popup without a border
Bram Moolenaar <Bram@vim.org>
parents:
26266
diff
changeset
|
748 if (nr) |
8b7f01b39d79
patch 8.2.3697: cannot drag a popup without a border
Bram Moolenaar <Bram@vim.org>
parents:
26266
diff
changeset
|
749 wp->w_popup_flags |= POPF_DRAGALL; |
8b7f01b39d79
patch 8.2.3697: cannot drag a popup without a border
Bram Moolenaar <Bram@vim.org>
parents:
26266
diff
changeset
|
750 else |
8b7f01b39d79
patch 8.2.3697: cannot drag a popup without a border
Bram Moolenaar <Bram@vim.org>
parents:
26266
diff
changeset
|
751 wp->w_popup_flags &= ~POPF_DRAGALL; |
8b7f01b39d79
patch 8.2.3697: cannot drag a popup without a border
Bram Moolenaar <Bram@vim.org>
parents:
26266
diff
changeset
|
752 } |
17580
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
753 |
29442
827d9f2b7a71
patch 9.0.0063: too many type casts for dict_get functions
Bram Moolenaar <Bram@vim.org>
parents:
29239
diff
changeset
|
754 nr = dict_get_bool(dict, "posinvert", -1); |
21857
1f6dc5b953c4
patch 8.2.1478: Vim9: cannot use "true" for some popup options
Bram Moolenaar <Bram@vim.org>
parents:
21731
diff
changeset
|
755 if (nr != -1) |
18542
244b336b94ce
patch 8.1.2265: when popup with "botleft" does not fit it flips incorrectly
Bram Moolenaar <Bram@vim.org>
parents:
18512
diff
changeset
|
756 { |
244b336b94ce
patch 8.1.2265: when popup with "botleft" does not fit it flips incorrectly
Bram Moolenaar <Bram@vim.org>
parents:
18512
diff
changeset
|
757 if (nr) |
244b336b94ce
patch 8.1.2265: when popup with "botleft" does not fit it flips incorrectly
Bram Moolenaar <Bram@vim.org>
parents:
18512
diff
changeset
|
758 wp->w_popup_flags |= POPF_POSINVERT; |
244b336b94ce
patch 8.1.2265: when popup with "botleft" does not fit it flips incorrectly
Bram Moolenaar <Bram@vim.org>
parents:
18512
diff
changeset
|
759 else |
244b336b94ce
patch 8.1.2265: when popup with "botleft" does not fit it flips incorrectly
Bram Moolenaar <Bram@vim.org>
parents:
18512
diff
changeset
|
760 wp->w_popup_flags &= ~POPF_POSINVERT; |
244b336b94ce
patch 8.1.2265: when popup with "botleft" does not fit it flips incorrectly
Bram Moolenaar <Bram@vim.org>
parents:
18512
diff
changeset
|
761 } |
244b336b94ce
patch 8.1.2265: when popup with "botleft" does not fit it flips incorrectly
Bram Moolenaar <Bram@vim.org>
parents:
18512
diff
changeset
|
762 |
29442
827d9f2b7a71
patch 9.0.0063: too many type casts for dict_get functions
Bram Moolenaar <Bram@vim.org>
parents:
29239
diff
changeset
|
763 nr = dict_get_bool(dict, "resize", -1); |
21857
1f6dc5b953c4
patch 8.2.1478: Vim9: cannot use "true" for some popup options
Bram Moolenaar <Bram@vim.org>
parents:
21731
diff
changeset
|
764 if (nr != -1) |
17580
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
765 { |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
766 if (nr) |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
767 wp->w_popup_flags |= POPF_RESIZE; |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
768 else |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
769 wp->w_popup_flags &= ~POPF_RESIZE; |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
770 } |
17051
221d4b82bc0b
patch 8.1.1525: cannot move a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17047
diff
changeset
|
771 |
17219
5169811b3044
patch 8.1.1609: the user cannot easily close a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17216
diff
changeset
|
772 di = dict_find(dict, (char_u *)"close", -1); |
5169811b3044
patch 8.1.1609: the user cannot easily close a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17216
diff
changeset
|
773 if (di != NULL) |
5169811b3044
patch 8.1.1609: the user cannot easily close a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17216
diff
changeset
|
774 { |
5169811b3044
patch 8.1.1609: the user cannot easily close a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17216
diff
changeset
|
775 int ok = TRUE; |
5169811b3044
patch 8.1.1609: the user cannot easily close a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17216
diff
changeset
|
776 |
5169811b3044
patch 8.1.1609: the user cannot easily close a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17216
diff
changeset
|
777 if (di->di_tv.v_type == VAR_STRING && di->di_tv.vval.v_string != NULL) |
5169811b3044
patch 8.1.1609: the user cannot easily close a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17216
diff
changeset
|
778 { |
5169811b3044
patch 8.1.1609: the user cannot easily close a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17216
diff
changeset
|
779 char_u *s = di->di_tv.vval.v_string; |
5169811b3044
patch 8.1.1609: the user cannot easily close a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17216
diff
changeset
|
780 |
5169811b3044
patch 8.1.1609: the user cannot easily close a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17216
diff
changeset
|
781 if (STRCMP(s, "none") == 0) |
5169811b3044
patch 8.1.1609: the user cannot easily close a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17216
diff
changeset
|
782 wp->w_popup_close = POPCLOSE_NONE; |
5169811b3044
patch 8.1.1609: the user cannot easily close a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17216
diff
changeset
|
783 else if (STRCMP(s, "button") == 0) |
5169811b3044
patch 8.1.1609: the user cannot easily close a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17216
diff
changeset
|
784 wp->w_popup_close = POPCLOSE_BUTTON; |
5169811b3044
patch 8.1.1609: the user cannot easily close a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17216
diff
changeset
|
785 else if (STRCMP(s, "click") == 0) |
5169811b3044
patch 8.1.1609: the user cannot easily close a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17216
diff
changeset
|
786 wp->w_popup_close = POPCLOSE_CLICK; |
5169811b3044
patch 8.1.1609: the user cannot easily close a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17216
diff
changeset
|
787 else |
5169811b3044
patch 8.1.1609: the user cannot easily close a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17216
diff
changeset
|
788 ok = FALSE; |
5169811b3044
patch 8.1.1609: the user cannot easily close a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17216
diff
changeset
|
789 } |
5169811b3044
patch 8.1.1609: the user cannot easily close a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17216
diff
changeset
|
790 else |
5169811b3044
patch 8.1.1609: the user cannot easily close a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17216
diff
changeset
|
791 ok = FALSE; |
5169811b3044
patch 8.1.1609: the user cannot easily close a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17216
diff
changeset
|
792 if (!ok) |
26865
bce848ec8b1b
patch 8.2.3961: error messages are spread out
Bram Moolenaar <Bram@vim.org>
parents:
26690
diff
changeset
|
793 semsg(_(e_invalid_value_for_argument_str_str), "close", tv_get_string(&di->di_tv)); |
17219
5169811b3044
patch 8.1.1609: the user cannot easily close a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17216
diff
changeset
|
794 } |
5169811b3044
patch 8.1.1609: the user cannot easily close a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17216
diff
changeset
|
795 |
29442
827d9f2b7a71
patch 9.0.0063: too many type casts for dict_get functions
Bram Moolenaar <Bram@vim.org>
parents:
29239
diff
changeset
|
796 str = dict_get_string(dict, "highlight", FALSE); |
17123
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
797 if (str != NULL) |
26193
c83460a14407
patch 8.2.3628: looking terminal colors is a bit slow
Bram Moolenaar <Bram@vim.org>
parents:
26165
diff
changeset
|
798 { |
17123
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
799 set_string_option_direct_in_win(wp, (char_u *)"wincolor", -1, |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
800 str, OPT_FREE|OPT_LOCAL, 0); |
26193
c83460a14407
patch 8.2.3628: looking terminal colors is a bit slow
Bram Moolenaar <Bram@vim.org>
parents:
26165
diff
changeset
|
801 #ifdef FEAT_TERMINAL |
c83460a14407
patch 8.2.3628: looking terminal colors is a bit slow
Bram Moolenaar <Bram@vim.org>
parents:
26165
diff
changeset
|
802 term_update_wincolor(wp); |
c83460a14407
patch 8.2.3628: looking terminal colors is a bit slow
Bram Moolenaar <Bram@vim.org>
parents:
26165
diff
changeset
|
803 #endif |
c83460a14407
patch 8.2.3628: looking terminal colors is a bit slow
Bram Moolenaar <Bram@vim.org>
parents:
26165
diff
changeset
|
804 } |
16890
5131023c5728
patch 8.1.1446: popup window callback not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16888
diff
changeset
|
805 |
17123
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
806 set_padding_border(dict, wp->w_popup_padding, "padding", 999); |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
807 set_padding_border(dict, wp->w_popup_border, "border", 1); |
16880
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
808 |
16888
ec61b6b79865
patch 8.1.1445: popup window border highlight not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16884
diff
changeset
|
809 di = dict_find(dict, (char_u *)"borderhighlight", -1); |
ec61b6b79865
patch 8.1.1445: popup window border highlight not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16884
diff
changeset
|
810 if (di != NULL) |
ec61b6b79865
patch 8.1.1445: popup window border highlight not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16884
diff
changeset
|
811 { |
17421
73e81cd9e6cb
patch 8.1.1709: Coverity warns for possibly using a NULL pointer
Bram Moolenaar <Bram@vim.org>
parents:
17417
diff
changeset
|
812 if (di->di_tv.v_type != VAR_LIST || di->di_tv.vval.v_list == NULL) |
26877
06a137af96f8
patch 8.2.3967: error messages are spread out
Bram Moolenaar <Bram@vim.org>
parents:
26865
diff
changeset
|
813 emsg(_(e_list_required)); |
16888
ec61b6b79865
patch 8.1.1445: popup window border highlight not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16884
diff
changeset
|
814 else |
ec61b6b79865
patch 8.1.1445: popup window border highlight not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16884
diff
changeset
|
815 { |
ec61b6b79865
patch 8.1.1445: popup window border highlight not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16884
diff
changeset
|
816 list_T *list = di->di_tv.vval.v_list; |
ec61b6b79865
patch 8.1.1445: popup window border highlight not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16884
diff
changeset
|
817 listitem_T *li; |
17123
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
818 int i; |
16888
ec61b6b79865
patch 8.1.1445: popup window border highlight not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16884
diff
changeset
|
819 |
20392
4c317d8c1051
patch 8.2.0751: Vim9: performance can be improved
Bram Moolenaar <Bram@vim.org>
parents:
20386
diff
changeset
|
820 CHECK_LIST_MATERIALIZE(list); |
17421
73e81cd9e6cb
patch 8.1.1709: Coverity warns for possibly using a NULL pointer
Bram Moolenaar <Bram@vim.org>
parents:
17417
diff
changeset
|
821 for (i = 0, li = list->lv_first; i < 4 && i < list->lv_len; |
73e81cd9e6cb
patch 8.1.1709: Coverity warns for possibly using a NULL pointer
Bram Moolenaar <Bram@vim.org>
parents:
17417
diff
changeset
|
822 ++i, li = li->li_next) |
73e81cd9e6cb
patch 8.1.1709: Coverity warns for possibly using a NULL pointer
Bram Moolenaar <Bram@vim.org>
parents:
17417
diff
changeset
|
823 { |
73e81cd9e6cb
patch 8.1.1709: Coverity warns for possibly using a NULL pointer
Bram Moolenaar <Bram@vim.org>
parents:
17417
diff
changeset
|
824 str = tv_get_string(&li->li_tv); |
73e81cd9e6cb
patch 8.1.1709: Coverity warns for possibly using a NULL pointer
Bram Moolenaar <Bram@vim.org>
parents:
17417
diff
changeset
|
825 if (*str != NUL) |
18584
351659cbadb4
patch 8.1.2286: using border highlight in popup window leaks memory
Bram Moolenaar <Bram@vim.org>
parents:
18558
diff
changeset
|
826 { |
351659cbadb4
patch 8.1.2286: using border highlight in popup window leaks memory
Bram Moolenaar <Bram@vim.org>
parents:
18558
diff
changeset
|
827 vim_free(wp->w_border_highlight[i]); |
17421
73e81cd9e6cb
patch 8.1.1709: Coverity warns for possibly using a NULL pointer
Bram Moolenaar <Bram@vim.org>
parents:
17417
diff
changeset
|
828 wp->w_border_highlight[i] = vim_strsave(str); |
18584
351659cbadb4
patch 8.1.2286: using border highlight in popup window leaks memory
Bram Moolenaar <Bram@vim.org>
parents:
18558
diff
changeset
|
829 } |
17421
73e81cd9e6cb
patch 8.1.1709: Coverity warns for possibly using a NULL pointer
Bram Moolenaar <Bram@vim.org>
parents:
17417
diff
changeset
|
830 } |
16888
ec61b6b79865
patch 8.1.1445: popup window border highlight not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16884
diff
changeset
|
831 if (list->lv_len == 1 && wp->w_border_highlight[0] != NULL) |
ec61b6b79865
patch 8.1.1445: popup window border highlight not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16884
diff
changeset
|
832 for (i = 1; i < 4; ++i) |
18584
351659cbadb4
patch 8.1.2286: using border highlight in popup window leaks memory
Bram Moolenaar <Bram@vim.org>
parents:
18558
diff
changeset
|
833 { |
351659cbadb4
patch 8.1.2286: using border highlight in popup window leaks memory
Bram Moolenaar <Bram@vim.org>
parents:
18558
diff
changeset
|
834 vim_free(wp->w_border_highlight[i]); |
17421
73e81cd9e6cb
patch 8.1.1709: Coverity warns for possibly using a NULL pointer
Bram Moolenaar <Bram@vim.org>
parents:
17417
diff
changeset
|
835 wp->w_border_highlight[i] = |
16888
ec61b6b79865
patch 8.1.1445: popup window border highlight not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16884
diff
changeset
|
836 vim_strsave(wp->w_border_highlight[0]); |
18584
351659cbadb4
patch 8.1.2286: using border highlight in popup window leaks memory
Bram Moolenaar <Bram@vim.org>
parents:
18558
diff
changeset
|
837 } |
16888
ec61b6b79865
patch 8.1.1445: popup window border highlight not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16884
diff
changeset
|
838 } |
ec61b6b79865
patch 8.1.1445: popup window border highlight not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16884
diff
changeset
|
839 } |
ec61b6b79865
patch 8.1.1445: popup window border highlight not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16884
diff
changeset
|
840 |
ec61b6b79865
patch 8.1.1445: popup window border highlight not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16884
diff
changeset
|
841 di = dict_find(dict, (char_u *)"borderchars", -1); |
ec61b6b79865
patch 8.1.1445: popup window border highlight not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16884
diff
changeset
|
842 if (di != NULL) |
ec61b6b79865
patch 8.1.1445: popup window border highlight not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16884
diff
changeset
|
843 { |
ec61b6b79865
patch 8.1.1445: popup window border highlight not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16884
diff
changeset
|
844 if (di->di_tv.v_type != VAR_LIST) |
26877
06a137af96f8
patch 8.2.3967: error messages are spread out
Bram Moolenaar <Bram@vim.org>
parents:
26865
diff
changeset
|
845 emsg(_(e_list_required)); |
16888
ec61b6b79865
patch 8.1.1445: popup window border highlight not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16884
diff
changeset
|
846 else |
ec61b6b79865
patch 8.1.1445: popup window border highlight not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16884
diff
changeset
|
847 { |
ec61b6b79865
patch 8.1.1445: popup window border highlight not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16884
diff
changeset
|
848 list_T *list = di->di_tv.vval.v_list; |
ec61b6b79865
patch 8.1.1445: popup window border highlight not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16884
diff
changeset
|
849 listitem_T *li; |
17123
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
850 int i; |
16888
ec61b6b79865
patch 8.1.1445: popup window border highlight not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16884
diff
changeset
|
851 |
ec61b6b79865
patch 8.1.1445: popup window border highlight not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16884
diff
changeset
|
852 if (list != NULL) |
19241
c53dbbf3229b
patch 8.2.0179: still a few places where range() does not work
Bram Moolenaar <Bram@vim.org>
parents:
19166
diff
changeset
|
853 { |
20392
4c317d8c1051
patch 8.2.0751: Vim9: performance can be improved
Bram Moolenaar <Bram@vim.org>
parents:
20386
diff
changeset
|
854 CHECK_LIST_MATERIALIZE(list); |
16888
ec61b6b79865
patch 8.1.1445: popup window border highlight not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16884
diff
changeset
|
855 for (i = 0, li = list->lv_first; i < 8 && i < list->lv_len; |
ec61b6b79865
patch 8.1.1445: popup window border highlight not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16884
diff
changeset
|
856 ++i, li = li->li_next) |
ec61b6b79865
patch 8.1.1445: popup window border highlight not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16884
diff
changeset
|
857 { |
ec61b6b79865
patch 8.1.1445: popup window border highlight not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16884
diff
changeset
|
858 str = tv_get_string(&li->li_tv); |
ec61b6b79865
patch 8.1.1445: popup window border highlight not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16884
diff
changeset
|
859 if (*str != NUL) |
ec61b6b79865
patch 8.1.1445: popup window border highlight not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16884
diff
changeset
|
860 wp->w_border_char[i] = mb_ptr2char(str); |
ec61b6b79865
patch 8.1.1445: popup window border highlight not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16884
diff
changeset
|
861 } |
19908
473ceb7f65e2
patch 8.2.0510: Coverity complains about using uninitialized variable
Bram Moolenaar <Bram@vim.org>
parents:
19888
diff
changeset
|
862 if (list->lv_len == 1) |
473ceb7f65e2
patch 8.2.0510: Coverity complains about using uninitialized variable
Bram Moolenaar <Bram@vim.org>
parents:
19888
diff
changeset
|
863 for (i = 1; i < 8; ++i) |
473ceb7f65e2
patch 8.2.0510: Coverity complains about using uninitialized variable
Bram Moolenaar <Bram@vim.org>
parents:
19888
diff
changeset
|
864 wp->w_border_char[i] = wp->w_border_char[0]; |
473ceb7f65e2
patch 8.2.0510: Coverity complains about using uninitialized variable
Bram Moolenaar <Bram@vim.org>
parents:
19888
diff
changeset
|
865 if (list->lv_len == 2) |
473ceb7f65e2
patch 8.2.0510: Coverity complains about using uninitialized variable
Bram Moolenaar <Bram@vim.org>
parents:
19888
diff
changeset
|
866 { |
473ceb7f65e2
patch 8.2.0510: Coverity complains about using uninitialized variable
Bram Moolenaar <Bram@vim.org>
parents:
19888
diff
changeset
|
867 for (i = 4; i < 8; ++i) |
473ceb7f65e2
patch 8.2.0510: Coverity complains about using uninitialized variable
Bram Moolenaar <Bram@vim.org>
parents:
19888
diff
changeset
|
868 wp->w_border_char[i] = wp->w_border_char[1]; |
473ceb7f65e2
patch 8.2.0510: Coverity complains about using uninitialized variable
Bram Moolenaar <Bram@vim.org>
parents:
19888
diff
changeset
|
869 for (i = 1; i < 4; ++i) |
473ceb7f65e2
patch 8.2.0510: Coverity complains about using uninitialized variable
Bram Moolenaar <Bram@vim.org>
parents:
19888
diff
changeset
|
870 wp->w_border_char[i] = wp->w_border_char[0]; |
473ceb7f65e2
patch 8.2.0510: Coverity complains about using uninitialized variable
Bram Moolenaar <Bram@vim.org>
parents:
19888
diff
changeset
|
871 } |
16888
ec61b6b79865
patch 8.1.1445: popup window border highlight not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16884
diff
changeset
|
872 } |
ec61b6b79865
patch 8.1.1445: popup window border highlight not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16884
diff
changeset
|
873 } |
ec61b6b79865
patch 8.1.1445: popup window border highlight not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16884
diff
changeset
|
874 } |
16904
9138e2c60bf1
patch 8.1.1453: popup window "moved" property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16902
diff
changeset
|
875 |
17202
4b40e8821f56
patch 8.1.1600: cannot specify highlighting for popup window scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
17200
diff
changeset
|
876 check_highlight(dict, "scrollbarhighlight", &wp->w_scrollbar_highlight); |
4b40e8821f56
patch 8.1.1600: cannot specify highlighting for popup window scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
17200
diff
changeset
|
877 check_highlight(dict, "thumbhighlight", &wp->w_thumb_highlight); |
4b40e8821f56
patch 8.1.1600: cannot specify highlighting for popup window scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
17200
diff
changeset
|
878 |
17123
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
879 di = dict_find(dict, (char_u *)"zindex", -1); |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
880 if (di != NULL) |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
881 { |
29442
827d9f2b7a71
patch 9.0.0063: too many type casts for dict_get functions
Bram Moolenaar <Bram@vim.org>
parents:
29239
diff
changeset
|
882 wp->w_zindex = dict_get_number(dict, "zindex"); |
17123
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
883 if (wp->w_zindex < 1) |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
884 wp->w_zindex = POPUPWIN_DEFAULT_ZINDEX; |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
885 if (wp->w_zindex > 32000) |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
886 wp->w_zindex = 32000; |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
887 } |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
888 |
17162
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
889 di = dict_find(dict, (char_u *)"mask", -1); |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
890 if (di != NULL) |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
891 { |
17417
aa4532c1d001
patch 8.1.1707: Coverity warns for possibly using a NULL pointer
Bram Moolenaar <Bram@vim.org>
parents:
17383
diff
changeset
|
892 int ok = FALSE; |
17162
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
893 |
17417
aa4532c1d001
patch 8.1.1707: Coverity warns for possibly using a NULL pointer
Bram Moolenaar <Bram@vim.org>
parents:
17383
diff
changeset
|
894 if (di->di_tv.v_type == VAR_LIST && di->di_tv.vval.v_list != NULL) |
17162
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
895 { |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
896 listitem_T *li; |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
897 |
17417
aa4532c1d001
patch 8.1.1707: Coverity warns for possibly using a NULL pointer
Bram Moolenaar <Bram@vim.org>
parents:
17383
diff
changeset
|
898 ok = TRUE; |
19888
435726a03481
patch 8.2.0500: using the same loop in many places
Bram Moolenaar <Bram@vim.org>
parents:
19647
diff
changeset
|
899 FOR_ALL_LIST_ITEMS(di->di_tv.vval.v_list, li) |
17162
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
900 { |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
901 if (li->li_tv.v_type != VAR_LIST |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
902 || li->li_tv.vval.v_list == NULL |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
903 || li->li_tv.vval.v_list->lv_len != 4) |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
904 { |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
905 ok = FALSE; |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
906 break; |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
907 } |
19241
c53dbbf3229b
patch 8.2.0179: still a few places where range() does not work
Bram Moolenaar <Bram@vim.org>
parents:
19166
diff
changeset
|
908 else |
20392
4c317d8c1051
patch 8.2.0751: Vim9: performance can be improved
Bram Moolenaar <Bram@vim.org>
parents:
20386
diff
changeset
|
909 CHECK_LIST_MATERIALIZE(li->li_tv.vval.v_list); |
17162
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
910 } |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
911 } |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
912 if (ok) |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
913 { |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
914 wp->w_popup_mask = di->di_tv.vval.v_list; |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
915 ++wp->w_popup_mask->lv_refcount; |
17510
a5427e35d0fb
patch 8.1.1753: use of popup window mask is inefficient
Bram Moolenaar <Bram@vim.org>
parents:
17508
diff
changeset
|
916 VIM_CLEAR(wp->w_popup_mask_cells); |
17162
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
917 } |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
918 else |
26865
bce848ec8b1b
patch 8.2.3961: error messages are spread out
Bram Moolenaar <Bram@vim.org>
parents:
26690
diff
changeset
|
919 semsg(_(e_invalid_value_for_argument_str), "mask"); |
17162
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
920 } |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
921 |
17123
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
922 #if defined(FEAT_TIMERS) |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
923 // Add timer to close the popup after some time. |
29442
827d9f2b7a71
patch 9.0.0063: too many type casts for dict_get functions
Bram Moolenaar <Bram@vim.org>
parents:
29239
diff
changeset
|
924 nr = dict_get_number(dict, "time"); |
17123
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
925 if (nr > 0) |
29900
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
926 popup_add_timeout(wp, nr, TRUE); |
17123
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
927 #endif |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
928 |
16904
9138e2c60bf1
patch 8.1.1453: popup window "moved" property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16902
diff
changeset
|
929 di = dict_find(dict, (char_u *)"moved", -1); |
9138e2c60bf1
patch 8.1.1453: popup window "moved" property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16902
diff
changeset
|
930 if (di != NULL) |
9138e2c60bf1
patch 8.1.1453: popup window "moved" property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16902
diff
changeset
|
931 { |
16908
df06694b761b
patch 8.1.1455: popup_atcursor() not completely implemented
Bram Moolenaar <Bram@vim.org>
parents:
16904
diff
changeset
|
932 set_moved_values(wp); |
17292
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
933 handle_moved_argument(wp, di, FALSE); |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
934 } |
16904
9138e2c60bf1
patch 8.1.1453: popup window "moved" property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16902
diff
changeset
|
935 |
17292
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
936 di = dict_find(dict, (char_u *)"mousemoved", -1); |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
937 if (di != NULL) |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
938 { |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
939 set_mousemoved_values(wp); |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
940 handle_moved_argument(wp, di, TRUE); |
16904
9138e2c60bf1
patch 8.1.1453: popup window "moved" property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16902
diff
changeset
|
941 } |
16986
03f3a9ca2770
patch 8.1.1493: redrawing with popups is slow and causes flicker
Bram Moolenaar <Bram@vim.org>
parents:
16908
diff
changeset
|
942 |
29442
827d9f2b7a71
patch 9.0.0063: too many type casts for dict_get functions
Bram Moolenaar <Bram@vim.org>
parents:
29239
diff
changeset
|
943 nr = dict_get_bool(dict, "cursorline", -1); |
23998
0967c54ff3b2
patch 8.2.2541: popup_create() does not allow boolean for "cursorline"
Bram Moolenaar <Bram@vim.org>
parents:
23936
diff
changeset
|
944 if (nr != -1) |
17429
6e756ad5ef1a
patch 8.1.1713: highlighting cursor line only works with popup_menu()
Bram Moolenaar <Bram@vim.org>
parents:
17421
diff
changeset
|
945 { |
23998
0967c54ff3b2
patch 8.2.2541: popup_create() does not allow boolean for "cursorline"
Bram Moolenaar <Bram@vim.org>
parents:
23936
diff
changeset
|
946 if (nr != 0) |
0967c54ff3b2
patch 8.2.2541: popup_create() does not allow boolean for "cursorline"
Bram Moolenaar <Bram@vim.org>
parents:
23936
diff
changeset
|
947 wp->w_popup_flags |= POPF_CURSORLINE; |
17429
6e756ad5ef1a
patch 8.1.1713: highlighting cursor line only works with popup_menu()
Bram Moolenaar <Bram@vim.org>
parents:
17421
diff
changeset
|
948 else |
23998
0967c54ff3b2
patch 8.2.2541: popup_create() does not allow boolean for "cursorline"
Bram Moolenaar <Bram@vim.org>
parents:
23936
diff
changeset
|
949 wp->w_popup_flags &= ~POPF_CURSORLINE; |
17429
6e756ad5ef1a
patch 8.1.1713: highlighting cursor line only works with popup_menu()
Bram Moolenaar <Bram@vim.org>
parents:
17421
diff
changeset
|
950 } |
6e756ad5ef1a
patch 8.1.1713: highlighting cursor line only works with popup_menu()
Bram Moolenaar <Bram@vim.org>
parents:
17421
diff
changeset
|
951 |
17123
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
952 di = dict_find(dict, (char_u *)"filter", -1); |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
953 if (di != NULL) |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
954 { |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
955 callback_T callback = get_callback(&di->di_tv); |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
956 |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
957 if (callback.cb_name != NULL) |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
958 { |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
959 free_callback(&wp->w_filter_cb); |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
960 set_callback(&wp->w_filter_cb, &callback); |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
961 } |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
962 } |
29442
827d9f2b7a71
patch 9.0.0063: too many type casts for dict_get functions
Bram Moolenaar <Bram@vim.org>
parents:
29239
diff
changeset
|
963 nr = dict_get_bool(dict, "mapping", -1); |
21857
1f6dc5b953c4
patch 8.2.1478: Vim9: cannot use "true" for some popup options
Bram Moolenaar <Bram@vim.org>
parents:
21731
diff
changeset
|
964 if (nr != -1) |
17604
506dd2efcbb2
patch 8.1.1799: cannot avoid mapping for a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17584
diff
changeset
|
965 { |
506dd2efcbb2
patch 8.1.1799: cannot avoid mapping for a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17584
diff
changeset
|
966 if (nr) |
506dd2efcbb2
patch 8.1.1799: cannot avoid mapping for a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17584
diff
changeset
|
967 wp->w_popup_flags |= POPF_MAPPING; |
506dd2efcbb2
patch 8.1.1799: cannot avoid mapping for a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17584
diff
changeset
|
968 else |
506dd2efcbb2
patch 8.1.1799: cannot avoid mapping for a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17584
diff
changeset
|
969 wp->w_popup_flags &= ~POPF_MAPPING; |
506dd2efcbb2
patch 8.1.1799: cannot avoid mapping for a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17584
diff
changeset
|
970 } |
17123
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
971 |
29442
827d9f2b7a71
patch 9.0.0063: too many type casts for dict_get functions
Bram Moolenaar <Bram@vim.org>
parents:
29239
diff
changeset
|
972 str = dict_get_string(dict, "filtermode", FALSE); |
17946
ec4248c4b92c
patch 8.1.1969: popup window filter is used in all modes
Bram Moolenaar <Bram@vim.org>
parents:
17934
diff
changeset
|
973 if (str != NULL) |
ec4248c4b92c
patch 8.1.1969: popup window filter is used in all modes
Bram Moolenaar <Bram@vim.org>
parents:
17934
diff
changeset
|
974 { |
ec4248c4b92c
patch 8.1.1969: popup window filter is used in all modes
Bram Moolenaar <Bram@vim.org>
parents:
17934
diff
changeset
|
975 if (STRCMP(str, "a") == 0) |
ec4248c4b92c
patch 8.1.1969: popup window filter is used in all modes
Bram Moolenaar <Bram@vim.org>
parents:
17934
diff
changeset
|
976 wp->w_filter_mode = MODE_ALL; |
ec4248c4b92c
patch 8.1.1969: popup window filter is used in all modes
Bram Moolenaar <Bram@vim.org>
parents:
17934
diff
changeset
|
977 else |
ec4248c4b92c
patch 8.1.1969: popup window filter is used in all modes
Bram Moolenaar <Bram@vim.org>
parents:
17934
diff
changeset
|
978 wp->w_filter_mode = mode_str2flags(str); |
ec4248c4b92c
patch 8.1.1969: popup window filter is used in all modes
Bram Moolenaar <Bram@vim.org>
parents:
17934
diff
changeset
|
979 } |
ec4248c4b92c
patch 8.1.1969: popup window filter is used in all modes
Bram Moolenaar <Bram@vim.org>
parents:
17934
diff
changeset
|
980 |
17123
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
981 di = dict_find(dict, (char_u *)"callback", -1); |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
982 if (di != NULL) |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
983 { |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
984 callback_T callback = get_callback(&di->di_tv); |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
985 |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
986 if (callback.cb_name != NULL) |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
987 { |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
988 free_callback(&wp->w_close_cb); |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
989 set_callback(&wp->w_close_cb, &callback); |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
990 } |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
991 } |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
992 } |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
993 |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
994 /* |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
995 * Go through the options in "dict" and apply them to popup window "wp". |
22403
3351d2cd3f1f
patch 8.2.1750: popup_setoptions() setting firstline fails if cursorline set
Bram Moolenaar <Bram@vim.org>
parents:
22377
diff
changeset
|
996 * "create" is TRUE when creating a new popup window. |
17123
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
997 */ |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
998 static void |
22403
3351d2cd3f1f
patch 8.2.1750: popup_setoptions() setting firstline fails if cursorline set
Bram Moolenaar <Bram@vim.org>
parents:
22377
diff
changeset
|
999 apply_options(win_T *wp, dict_T *dict, int create) |
17123
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
1000 { |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
1001 int nr; |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
1002 |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
1003 apply_move_options(wp, dict); |
21506
1d1ffb0dbd87
patch 8.2.1303: calling popup_setoptions() resets 'signcolumn'
Bram Moolenaar <Bram@vim.org>
parents:
21377
diff
changeset
|
1004 |
22403
3351d2cd3f1f
patch 8.2.1750: popup_setoptions() setting firstline fails if cursorline set
Bram Moolenaar <Bram@vim.org>
parents:
22377
diff
changeset
|
1005 if (create) |
3351d2cd3f1f
patch 8.2.1750: popup_setoptions() setting firstline fails if cursorline set
Bram Moolenaar <Bram@vim.org>
parents:
22377
diff
changeset
|
1006 set_string_option_direct_in_win(wp, (char_u *)"signcolumn", -1, |
21506
1d1ffb0dbd87
patch 8.2.1303: calling popup_setoptions() resets 'signcolumn'
Bram Moolenaar <Bram@vim.org>
parents:
21377
diff
changeset
|
1007 (char_u *)"no", OPT_FREE|OPT_LOCAL, 0); |
1d1ffb0dbd87
patch 8.2.1303: calling popup_setoptions() resets 'signcolumn'
Bram Moolenaar <Bram@vim.org>
parents:
21377
diff
changeset
|
1008 |
17123
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
1009 apply_general_options(wp, dict); |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
1010 |
29442
827d9f2b7a71
patch 9.0.0063: too many type casts for dict_get functions
Bram Moolenaar <Bram@vim.org>
parents:
29239
diff
changeset
|
1011 nr = dict_get_bool(dict, "hidden", FALSE); |
17121
808ea76535a9
patch 8.1.1560: popup window hidden option not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17119
diff
changeset
|
1012 if (nr > 0) |
28778
a8c2bd5fc727
patch 8.2.4913: popup_hide() does not always have effect
Bram Moolenaar <Bram@vim.org>
parents:
28550
diff
changeset
|
1013 wp->w_popup_flags |= POPF_HIDDEN | POPF_HIDDEN_FORCE; |
17121
808ea76535a9
patch 8.1.1560: popup window hidden option not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17119
diff
changeset
|
1014 |
22403
3351d2cd3f1f
patch 8.2.1750: popup_setoptions() setting firstline fails if cursorline set
Bram Moolenaar <Bram@vim.org>
parents:
22377
diff
changeset
|
1015 // when "firstline" and "cursorline" are both set and the cursor would be |
3351d2cd3f1f
patch 8.2.1750: popup_setoptions() setting firstline fails if cursorline set
Bram Moolenaar <Bram@vim.org>
parents:
22377
diff
changeset
|
1016 // above or below the displayed lines, move the cursor to "firstline". |
22357
0e231e8e70f8
patch 8.2.1727: a popup created with "cursorline" will ignore "firstline"
Bram Moolenaar <Bram@vim.org>
parents:
22178
diff
changeset
|
1017 if (wp->w_firstline > 0 && (wp->w_popup_flags & POPF_CURSORLINE)) |
0e231e8e70f8
patch 8.2.1727: a popup created with "cursorline" will ignore "firstline"
Bram Moolenaar <Bram@vim.org>
parents:
22178
diff
changeset
|
1018 { |
0e231e8e70f8
patch 8.2.1727: a popup created with "cursorline" will ignore "firstline"
Bram Moolenaar <Bram@vim.org>
parents:
22178
diff
changeset
|
1019 if (wp->w_firstline > wp->w_buffer->b_ml.ml_line_count) |
0e231e8e70f8
patch 8.2.1727: a popup created with "cursorline" will ignore "firstline"
Bram Moolenaar <Bram@vim.org>
parents:
22178
diff
changeset
|
1020 wp->w_cursor.lnum = wp->w_buffer->b_ml.ml_line_count; |
22403
3351d2cd3f1f
patch 8.2.1750: popup_setoptions() setting firstline fails if cursorline set
Bram Moolenaar <Bram@vim.org>
parents:
22377
diff
changeset
|
1021 else if (wp->w_cursor.lnum < wp->w_firstline |
3351d2cd3f1f
patch 8.2.1750: popup_setoptions() setting firstline fails if cursorline set
Bram Moolenaar <Bram@vim.org>
parents:
22377
diff
changeset
|
1022 || wp->w_cursor.lnum >= wp->w_firstline + wp->w_height) |
22357
0e231e8e70f8
patch 8.2.1727: a popup created with "cursorline" will ignore "firstline"
Bram Moolenaar <Bram@vim.org>
parents:
22178
diff
changeset
|
1023 wp->w_cursor.lnum = wp->w_firstline; |
22403
3351d2cd3f1f
patch 8.2.1750: popup_setoptions() setting firstline fails if cursorline set
Bram Moolenaar <Bram@vim.org>
parents:
22377
diff
changeset
|
1024 wp->w_topline = wp->w_firstline; |
3351d2cd3f1f
patch 8.2.1750: popup_setoptions() setting firstline fails if cursorline set
Bram Moolenaar <Bram@vim.org>
parents:
22377
diff
changeset
|
1025 wp->w_valid &= ~VALID_BOTLINE; |
22357
0e231e8e70f8
patch 8.2.1727: a popup created with "cursorline" will ignore "firstline"
Bram Moolenaar <Bram@vim.org>
parents:
22178
diff
changeset
|
1026 } |
0e231e8e70f8
patch 8.2.1727: a popup created with "cursorline" will ignore "firstline"
Bram Moolenaar <Bram@vim.org>
parents:
22178
diff
changeset
|
1027 |
16986
03f3a9ca2770
patch 8.1.1493: redrawing with popups is slow and causes flicker
Bram Moolenaar <Bram@vim.org>
parents:
16908
diff
changeset
|
1028 popup_mask_refresh = TRUE; |
17429
6e756ad5ef1a
patch 8.1.1713: highlighting cursor line only works with popup_menu()
Bram Moolenaar <Bram@vim.org>
parents:
17421
diff
changeset
|
1029 popup_highlight_curline(wp); |
16778
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1030 } |
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1031 |
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1032 /* |
16811
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1033 * Add lines to the popup from a list of strings. |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1034 */ |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1035 static void |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1036 add_popup_strings(buf_T *buf, list_T *l) |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1037 { |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1038 listitem_T *li; |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1039 linenr_T lnum = 0; |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1040 char_u *p; |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1041 |
19888
435726a03481
patch 8.2.0500: using the same loop in many places
Bram Moolenaar <Bram@vim.org>
parents:
19647
diff
changeset
|
1042 FOR_ALL_LIST_ITEMS(l, li) |
16811
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1043 if (li->li_tv.v_type == VAR_STRING) |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1044 { |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1045 p = li->li_tv.vval.v_string; |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1046 ml_append_buf(buf, lnum++, |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1047 p == NULL ? (char_u *)"" : p, (colnr_T)0, TRUE); |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1048 } |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1049 } |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1050 |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1051 /* |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1052 * Add lines to the popup from a list of dictionaries. |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1053 */ |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1054 static void |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1055 add_popup_dicts(buf_T *buf, list_T *l) |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1056 { |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1057 listitem_T *li; |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1058 listitem_T *pli; |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1059 linenr_T lnum = 0; |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1060 char_u *p; |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1061 dict_T *dict; |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1062 |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1063 // first add the text lines |
19888
435726a03481
patch 8.2.0500: using the same loop in many places
Bram Moolenaar <Bram@vim.org>
parents:
19647
diff
changeset
|
1064 FOR_ALL_LIST_ITEMS(l, li) |
16811
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1065 { |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1066 if (li->li_tv.v_type != VAR_DICT) |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1067 { |
29034
f3c014fe5c16
patch 8.2.5039: confusing error if first argument of popup_create() is wrong
Bram Moolenaar <Bram@vim.org>
parents:
29032
diff
changeset
|
1068 semsg(_(e_argument_1_list_item_nr_dictionary_required), lnum + 1); |
16811
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1069 return; |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1070 } |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1071 dict = li->li_tv.vval.v_dict; |
29442
827d9f2b7a71
patch 9.0.0063: too many type casts for dict_get functions
Bram Moolenaar <Bram@vim.org>
parents:
29239
diff
changeset
|
1072 p = dict == NULL ? NULL : dict_get_string(dict, "text", FALSE); |
16811
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1073 ml_append_buf(buf, lnum++, |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1074 p == NULL ? (char_u *)"" : p, (colnr_T)0, TRUE); |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1075 } |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1076 |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1077 // add the text properties |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1078 lnum = 1; |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1079 for (li = l->lv_first; li != NULL; li = li->li_next, ++lnum) |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1080 { |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1081 dictitem_T *di; |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1082 list_T *plist; |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1083 |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1084 dict = li->li_tv.vval.v_dict; |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1085 di = dict_find(dict, (char_u *)"props", -1); |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1086 if (di != NULL) |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1087 { |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1088 if (di->di_tv.v_type != VAR_LIST) |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1089 { |
26877
06a137af96f8
patch 8.2.3967: error messages are spread out
Bram Moolenaar <Bram@vim.org>
parents:
26865
diff
changeset
|
1090 emsg(_(e_list_required)); |
16811
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1091 return; |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1092 } |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1093 plist = di->di_tv.vval.v_list; |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1094 if (plist != NULL) |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1095 { |
19888
435726a03481
patch 8.2.0500: using the same loop in many places
Bram Moolenaar <Bram@vim.org>
parents:
19647
diff
changeset
|
1096 FOR_ALL_LIST_ITEMS(plist, pli) |
16811
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1097 { |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1098 if (pli->li_tv.v_type != VAR_DICT) |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1099 { |
26877
06a137af96f8
patch 8.2.3967: error messages are spread out
Bram Moolenaar <Bram@vim.org>
parents:
26865
diff
changeset
|
1100 emsg(_(e_dictionary_required)); |
16811
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1101 return; |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1102 } |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1103 dict = pli->li_tv.vval.v_dict; |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1104 if (dict != NULL) |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1105 { |
29442
827d9f2b7a71
patch 9.0.0063: too many type casts for dict_get functions
Bram Moolenaar <Bram@vim.org>
parents:
29239
diff
changeset
|
1106 int col = dict_get_number(dict, "col"); |
16811
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1107 |
29660
e134ff00be57
patch 9.0.0170: various minor code formatting issues
Bram Moolenaar <Bram@vim.org>
parents:
29451
diff
changeset
|
1108 prop_add_common(lnum, col, dict, buf, NULL); |
16811
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1109 } |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1110 } |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1111 } |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1112 } |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1113 } |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1114 } |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1115 |
0457d49eb2d9
patch 8.1.1407: popup_create() does not support text properties
Bram Moolenaar <Bram@vim.org>
parents:
16809
diff
changeset
|
1116 /* |
17119
b439e096a011
patch 8.1.1559: popup window title property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17117
diff
changeset
|
1117 * Get the padding plus border at the top, adjusted to 1 if there is a title. |
b439e096a011
patch 8.1.1559: popup window title property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17117
diff
changeset
|
1118 */ |
17811
b5499bf22a97
patch 8.1.1902: cannot have an info popup without a border
Bram Moolenaar <Bram@vim.org>
parents:
17791
diff
changeset
|
1119 int |
17119
b439e096a011
patch 8.1.1559: popup window title property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17117
diff
changeset
|
1120 popup_top_extra(win_T *wp) |
b439e096a011
patch 8.1.1559: popup window title property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17117
diff
changeset
|
1121 { |
b439e096a011
patch 8.1.1559: popup window title property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17117
diff
changeset
|
1122 int extra = wp->w_popup_border[0] + wp->w_popup_padding[0]; |
b439e096a011
patch 8.1.1559: popup window title property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17117
diff
changeset
|
1123 |
b439e096a011
patch 8.1.1559: popup window title property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17117
diff
changeset
|
1124 if (extra == 0 && wp->w_popup_title != NULL && *wp->w_popup_title != NUL) |
b439e096a011
patch 8.1.1559: popup window title property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17117
diff
changeset
|
1125 return 1; |
b439e096a011
patch 8.1.1559: popup window title property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17117
diff
changeset
|
1126 return extra; |
b439e096a011
patch 8.1.1559: popup window title property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17117
diff
changeset
|
1127 } |
b439e096a011
patch 8.1.1559: popup window title property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17117
diff
changeset
|
1128 |
b439e096a011
patch 8.1.1559: popup window title property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17117
diff
changeset
|
1129 /* |
18623
3089b422b9dc
patch 8.1.2304: cannot get the mouse position when getting a mouse click
Bram Moolenaar <Bram@vim.org>
parents:
18613
diff
changeset
|
1130 * Get the padding plus border at the left. |
3089b422b9dc
patch 8.1.2304: cannot get the mouse position when getting a mouse click
Bram Moolenaar <Bram@vim.org>
parents:
18613
diff
changeset
|
1131 */ |
3089b422b9dc
patch 8.1.2304: cannot get the mouse position when getting a mouse click
Bram Moolenaar <Bram@vim.org>
parents:
18613
diff
changeset
|
1132 int |
3089b422b9dc
patch 8.1.2304: cannot get the mouse position when getting a mouse click
Bram Moolenaar <Bram@vim.org>
parents:
18613
diff
changeset
|
1133 popup_left_extra(win_T *wp) |
3089b422b9dc
patch 8.1.2304: cannot get the mouse position when getting a mouse click
Bram Moolenaar <Bram@vim.org>
parents:
18613
diff
changeset
|
1134 { |
3089b422b9dc
patch 8.1.2304: cannot get the mouse position when getting a mouse click
Bram Moolenaar <Bram@vim.org>
parents:
18613
diff
changeset
|
1135 return wp->w_popup_border[3] + wp->w_popup_padding[3]; |
3089b422b9dc
patch 8.1.2304: cannot get the mouse position when getting a mouse click
Bram Moolenaar <Bram@vim.org>
parents:
18613
diff
changeset
|
1136 } |
3089b422b9dc
patch 8.1.2304: cannot get the mouse position when getting a mouse click
Bram Moolenaar <Bram@vim.org>
parents:
18613
diff
changeset
|
1137 |
3089b422b9dc
patch 8.1.2304: cannot get the mouse position when getting a mouse click
Bram Moolenaar <Bram@vim.org>
parents:
18613
diff
changeset
|
1138 /* |
17235
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
1139 * Return the height of popup window "wp", including border and padding. |
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
1140 */ |
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
1141 int |
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
1142 popup_height(win_T *wp) |
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
1143 { |
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
1144 return wp->w_height |
17767
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
1145 + popup_top_extra(wp) |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
1146 + wp->w_popup_padding[2] + wp->w_popup_border[2]; |
17235
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
1147 } |
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
1148 |
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
1149 /* |
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
1150 * Return the width of popup window "wp", including border, padding and |
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
1151 * scrollbar. |
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
1152 */ |
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
1153 int |
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
1154 popup_width(win_T *wp) |
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
1155 { |
17354
102ed3a26a5d
patch 8.1.1676: "maxwidth" of popup window does not always work properly
Bram Moolenaar <Bram@vim.org>
parents:
17348
diff
changeset
|
1156 // w_leftcol is how many columns of the core are left of the screen |
102ed3a26a5d
patch 8.1.1676: "maxwidth" of popup window does not always work properly
Bram Moolenaar <Bram@vim.org>
parents:
17348
diff
changeset
|
1157 // w_popup_rightoff is how many columns of the core are right of the screen |
17235
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
1158 return wp->w_width + wp->w_leftcol |
17767
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
1159 + popup_extra_width(wp) |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
1160 + wp->w_popup_rightoff; |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
1161 } |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
1162 |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
1163 /* |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
1164 * Return the extra width of popup window "wp": border, padding and scrollbar. |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
1165 */ |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
1166 int |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
1167 popup_extra_width(win_T *wp) |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
1168 { |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
1169 return wp->w_popup_padding[3] + wp->w_popup_border[3] |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
1170 + wp->w_popup_padding[1] + wp->w_popup_border[1] |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
1171 + wp->w_has_scrollbar; |
17235
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
1172 } |
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
1173 |
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
1174 /* |
16817
069ee8dc8c8d
patch 8.1.1410: popup_move() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16813
diff
changeset
|
1175 * Adjust the position and size of the popup to fit on the screen. |
069ee8dc8c8d
patch 8.1.1410: popup_move() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16813
diff
changeset
|
1176 */ |
17789
0f7ae8010787
patch 8.1.1891: functions used in one file are global
Bram Moolenaar <Bram@vim.org>
parents:
17771
diff
changeset
|
1177 static void |
16817
069ee8dc8c8d
patch 8.1.1410: popup_move() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16813
diff
changeset
|
1178 popup_adjust_position(win_T *wp) |
069ee8dc8c8d
patch 8.1.1410: popup_move() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16813
diff
changeset
|
1179 { |
16837
18593056d8f1
patch 8.1.1420: popup window size only uses first line length
Bram Moolenaar <Bram@vim.org>
parents:
16833
diff
changeset
|
1180 linenr_T lnum; |
18593056d8f1
patch 8.1.1420: popup window size only uses first line length
Bram Moolenaar <Bram@vim.org>
parents:
16833
diff
changeset
|
1181 int wrapped = 0; |
18593056d8f1
patch 8.1.1420: popup window size only uses first line length
Bram Moolenaar <Bram@vim.org>
parents:
16833
diff
changeset
|
1182 int maxwidth; |
28279
8ef5c996df31
patch 8.2.4665: popup with "minwidth" and scrollbar not updated properly
Bram Moolenaar <Bram@vim.org>
parents:
28187
diff
changeset
|
1183 int maxwidth_no_scrollbar; |
8ef5c996df31
patch 8.2.4665: popup with "minwidth" and scrollbar not updated properly
Bram Moolenaar <Bram@vim.org>
parents:
28187
diff
changeset
|
1184 int width_with_scrollbar = 0; |
18339
a776385eac9f
patch 8.1.2164: stuck when using "j" in a popupwin with popup_filter_menu
Bram Moolenaar <Bram@vim.org>
parents:
18239
diff
changeset
|
1185 int used_maxwidth = FALSE; |
21514
27bbd918e70c
patch 8.2.1307: popup window width does not include number of sign columns
Bram Moolenaar <Bram@vim.org>
parents:
21506
diff
changeset
|
1186 int margin_width = 0; |
17235
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
1187 int maxspace; |
16855
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
1188 int center_vert = FALSE; |
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
1189 int center_hor = FALSE; |
16896
52fc577a087d
patch 8.1.1449: popup text truncated at end of screen
Bram Moolenaar <Bram@vim.org>
parents:
16892
diff
changeset
|
1190 int allow_adjust_left = !wp->w_popup_fixed; |
17119
b439e096a011
patch 8.1.1559: popup window title property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17117
diff
changeset
|
1191 int top_extra = popup_top_extra(wp); |
16898
16fd1bb2e675
patch 8.1.1450: popup window positioning wrong when using padding or borders
Bram Moolenaar <Bram@vim.org>
parents:
16896
diff
changeset
|
1192 int right_extra = wp->w_popup_border[1] + wp->w_popup_padding[1]; |
16fd1bb2e675
patch 8.1.1450: popup window positioning wrong when using padding or borders
Bram Moolenaar <Bram@vim.org>
parents:
16896
diff
changeset
|
1193 int bot_extra = wp->w_popup_border[2] + wp->w_popup_padding[2]; |
16fd1bb2e675
patch 8.1.1450: popup window positioning wrong when using padding or borders
Bram Moolenaar <Bram@vim.org>
parents:
16896
diff
changeset
|
1194 int left_extra = wp->w_popup_border[3] + wp->w_popup_padding[3]; |
16fd1bb2e675
patch 8.1.1450: popup window positioning wrong when using padding or borders
Bram Moolenaar <Bram@vim.org>
parents:
16896
diff
changeset
|
1195 int extra_height = top_extra + bot_extra; |
16fd1bb2e675
patch 8.1.1450: popup window positioning wrong when using padding or borders
Bram Moolenaar <Bram@vim.org>
parents:
16896
diff
changeset
|
1196 int extra_width = left_extra + right_extra; |
18588
7dfdc319f4ff
patch 8.1.2288: not using all space when popup with "topleft" flips to above
Bram Moolenaar <Bram@vim.org>
parents:
18584
diff
changeset
|
1197 int w_height_before_limit; |
16986
03f3a9ca2770
patch 8.1.1493: redrawing with popups is slow and causes flicker
Bram Moolenaar <Bram@vim.org>
parents:
16908
diff
changeset
|
1198 int org_winrow = wp->w_winrow; |
03f3a9ca2770
patch 8.1.1493: redrawing with popups is slow and causes flicker
Bram Moolenaar <Bram@vim.org>
parents:
16908
diff
changeset
|
1199 int org_wincol = wp->w_wincol; |
03f3a9ca2770
patch 8.1.1493: redrawing with popups is slow and causes flicker
Bram Moolenaar <Bram@vim.org>
parents:
16908
diff
changeset
|
1200 int org_width = wp->w_width; |
03f3a9ca2770
patch 8.1.1493: redrawing with popups is slow and causes flicker
Bram Moolenaar <Bram@vim.org>
parents:
16908
diff
changeset
|
1201 int org_height = wp->w_height; |
17206
8ca93f88b84a
patch 8.1.1602: popup window cannot overflow on the left or right
Bram Moolenaar <Bram@vim.org>
parents:
17202
diff
changeset
|
1202 int org_leftcol = wp->w_leftcol; |
17235
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
1203 int org_leftoff = wp->w_popup_leftoff; |
19647
c8cb1a41f64c
patch 8.2.0380: tiny popup when creating a terminal popup without minwidth
Bram Moolenaar <Bram@vim.org>
parents:
19637
diff
changeset
|
1204 int minwidth, minheight; |
21713
b997e872ff95
patch 8.2.1406: popupwindow lacks scrollbar if no "maxheight" is used
Bram Moolenaar <Bram@vim.org>
parents:
21514
diff
changeset
|
1205 int maxheight = Rows; |
17863
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1206 int wantline = wp->w_wantline; // adjusted for textprop |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1207 int wantcol = wp->w_wantcol; // adjusted for textprop |
18432
ee8db42dacf6
patch 8.1.2210: using negative offset for popup_create() does not work
Bram Moolenaar <Bram@vim.org>
parents:
18398
diff
changeset
|
1208 int use_wantcol = wantcol != 0; |
21729
f2ba8ebbab2b
patch 8.2.1414: popupwindow missing last couple of lines
Bram Moolenaar <Bram@vim.org>
parents:
21713
diff
changeset
|
1209 int adjust_height_for_top_aligned = FALSE; |
16837
18593056d8f1
patch 8.1.1420: popup window size only uses first line length
Bram Moolenaar <Bram@vim.org>
parents:
16833
diff
changeset
|
1210 |
16855
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
1211 wp->w_winrow = 0; |
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
1212 wp->w_wincol = 0; |
17206
8ca93f88b84a
patch 8.1.1602: popup window cannot overflow on the left or right
Bram Moolenaar <Bram@vim.org>
parents:
17202
diff
changeset
|
1213 wp->w_leftcol = 0; |
17235
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
1214 wp->w_popup_leftoff = 0; |
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
1215 wp->w_popup_rightoff = 0; |
17863
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1216 |
18027
56032a704448
patch 8.1.2009: cursorline highlighting not updated in popup window
Bram Moolenaar <Bram@vim.org>
parents:
18004
diff
changeset
|
1217 // May need to update the "cursorline" highlighting, which may also change |
56032a704448
patch 8.1.2009: cursorline highlighting not updated in popup window
Bram Moolenaar <Bram@vim.org>
parents:
18004
diff
changeset
|
1218 // "topline" |
56032a704448
patch 8.1.2009: cursorline highlighting not updated in popup window
Bram Moolenaar <Bram@vim.org>
parents:
18004
diff
changeset
|
1219 if (wp->w_popup_last_curline != wp->w_cursor.lnum) |
56032a704448
patch 8.1.2009: cursorline highlighting not updated in popup window
Bram Moolenaar <Bram@vim.org>
parents:
18004
diff
changeset
|
1220 popup_highlight_curline(wp); |
56032a704448
patch 8.1.2009: cursorline highlighting not updated in popup window
Bram Moolenaar <Bram@vim.org>
parents:
18004
diff
changeset
|
1221 |
17863
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1222 if (wp->w_popup_prop_type > 0 && win_valid(wp->w_popup_prop_win)) |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1223 { |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1224 win_T *prop_win = wp->w_popup_prop_win; |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1225 textprop_T prop; |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1226 linenr_T prop_lnum; |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1227 pos_T pos; |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1228 int screen_row; |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1229 int screen_scol; |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1230 int screen_ccol; |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1231 int screen_ecol; |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1232 |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1233 // Popup window is positioned relative to a text property. |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1234 if (find_visible_prop(prop_win, |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1235 wp->w_popup_prop_type, wp->w_popup_prop_id, |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1236 &prop, &prop_lnum) == FAIL) |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1237 { |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1238 // Text property is no longer visible, hide the popup. |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1239 // Unhiding the popup is done in check_popup_unhidden(). |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1240 if ((wp->w_popup_flags & POPF_HIDDEN) == 0) |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1241 { |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1242 wp->w_popup_flags |= POPF_HIDDEN; |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1243 if (win_valid(wp->w_popup_prop_win)) |
29732
89e1d67814a9
patch 9.0.0206: redraw flags are not named specifically
Bram Moolenaar <Bram@vim.org>
parents:
29660
diff
changeset
|
1244 redraw_win_later(wp->w_popup_prop_win, UPD_SOME_VALID); |
17863
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1245 } |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1246 return; |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1247 } |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1248 |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1249 // Compute the desired position from the position of the text |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1250 // property. Use "wantline" and "wantcol" as offsets. |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1251 pos.lnum = prop_lnum; |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1252 pos.col = prop.tp_col; |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1253 if (wp->w_popup_pos == POPPOS_TOPLEFT |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1254 || wp->w_popup_pos == POPPOS_BOTLEFT) |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1255 pos.col += prop.tp_len - 1; |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1256 textpos2screenpos(prop_win, &pos, &screen_row, |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1257 &screen_scol, &screen_ccol, &screen_ecol); |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1258 |
23897
3033dade50ca
patch 8.2.2491: popup window for text property may show in first screen line
Bram Moolenaar <Bram@vim.org>
parents:
23869
diff
changeset
|
1259 if (screen_scol == 0) |
3033dade50ca
patch 8.2.2491: popup window for text property may show in first screen line
Bram Moolenaar <Bram@vim.org>
parents:
23869
diff
changeset
|
1260 { |
3033dade50ca
patch 8.2.2491: popup window for text property may show in first screen line
Bram Moolenaar <Bram@vim.org>
parents:
23869
diff
changeset
|
1261 // position is off screen, make the width zero to hide it. |
3033dade50ca
patch 8.2.2491: popup window for text property may show in first screen line
Bram Moolenaar <Bram@vim.org>
parents:
23869
diff
changeset
|
1262 wp->w_width = 0; |
3033dade50ca
patch 8.2.2491: popup window for text property may show in first screen line
Bram Moolenaar <Bram@vim.org>
parents:
23869
diff
changeset
|
1263 return; |
3033dade50ca
patch 8.2.2491: popup window for text property may show in first screen line
Bram Moolenaar <Bram@vim.org>
parents:
23869
diff
changeset
|
1264 } |
17863
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1265 if (wp->w_popup_pos == POPPOS_TOPLEFT |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1266 || wp->w_popup_pos == POPPOS_TOPRIGHT) |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1267 // below the text |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1268 wantline = screen_row + wantline + 1; |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1269 else |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1270 // above the text |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1271 wantline = screen_row + wantline - 1; |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1272 center_vert = FALSE; |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1273 if (wp->w_popup_pos == POPPOS_TOPLEFT |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1274 || wp->w_popup_pos == POPPOS_BOTLEFT) |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1275 // right of the text |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1276 wantcol = screen_ecol + wantcol; |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1277 else |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1278 // left of the text |
17875
f13a5c48320b
patch 8.1.1934: not enough tests for text property popup window
Bram Moolenaar <Bram@vim.org>
parents:
17863
diff
changeset
|
1279 wantcol = screen_scol + wantcol - 2; |
18438
144fa40ee706
patch 8.1.2213: popup_textprop tests fail
Bram Moolenaar <Bram@vim.org>
parents:
18432
diff
changeset
|
1280 use_wantcol = TRUE; |
144fa40ee706
patch 8.1.2213: popup_textprop tests fail
Bram Moolenaar <Bram@vim.org>
parents:
18432
diff
changeset
|
1281 } |
144fa40ee706
patch 8.1.2213: popup_textprop tests fail
Bram Moolenaar <Bram@vim.org>
parents:
18432
diff
changeset
|
1282 else |
144fa40ee706
patch 8.1.2213: popup_textprop tests fail
Bram Moolenaar <Bram@vim.org>
parents:
18432
diff
changeset
|
1283 { |
144fa40ee706
patch 8.1.2213: popup_textprop tests fail
Bram Moolenaar <Bram@vim.org>
parents:
18432
diff
changeset
|
1284 // If no line was specified default to vertical centering. |
144fa40ee706
patch 8.1.2213: popup_textprop tests fail
Bram Moolenaar <Bram@vim.org>
parents:
18432
diff
changeset
|
1285 if (wantline == 0) |
144fa40ee706
patch 8.1.2213: popup_textprop tests fail
Bram Moolenaar <Bram@vim.org>
parents:
18432
diff
changeset
|
1286 center_vert = TRUE; |
144fa40ee706
patch 8.1.2213: popup_textprop tests fail
Bram Moolenaar <Bram@vim.org>
parents:
18432
diff
changeset
|
1287 else if (wantline < 0) |
144fa40ee706
patch 8.1.2213: popup_textprop tests fail
Bram Moolenaar <Bram@vim.org>
parents:
18432
diff
changeset
|
1288 // If "wantline" is negative it actually means zero. |
144fa40ee706
patch 8.1.2213: popup_textprop tests fail
Bram Moolenaar <Bram@vim.org>
parents:
18432
diff
changeset
|
1289 wantline = 0; |
144fa40ee706
patch 8.1.2213: popup_textprop tests fail
Bram Moolenaar <Bram@vim.org>
parents:
18432
diff
changeset
|
1290 if (wantcol < 0) |
144fa40ee706
patch 8.1.2213: popup_textprop tests fail
Bram Moolenaar <Bram@vim.org>
parents:
18432
diff
changeset
|
1291 // If "wantcol" is negative it actually means zero. |
144fa40ee706
patch 8.1.2213: popup_textprop tests fail
Bram Moolenaar <Bram@vim.org>
parents:
18432
diff
changeset
|
1292 wantcol = 0; |
17863
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1293 } |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1294 |
16855
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
1295 if (wp->w_popup_pos == POPPOS_CENTER) |
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
1296 { |
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
1297 // center after computing the size |
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
1298 center_vert = TRUE; |
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
1299 center_hor = TRUE; |
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
1300 } |
16817
069ee8dc8c8d
patch 8.1.1410: popup_move() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16813
diff
changeset
|
1301 else |
16855
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
1302 { |
18438
144fa40ee706
patch 8.1.2213: popup_textprop tests fail
Bram Moolenaar <Bram@vim.org>
parents:
18432
diff
changeset
|
1303 if (wantline > 0 && (wp->w_popup_pos == POPPOS_TOPLEFT |
144fa40ee706
patch 8.1.2213: popup_textprop tests fail
Bram Moolenaar <Bram@vim.org>
parents:
18432
diff
changeset
|
1304 || wp->w_popup_pos == POPPOS_TOPRIGHT)) |
16855
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
1305 { |
17863
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1306 wp->w_winrow = wantline - 1; |
16855
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
1307 if (wp->w_winrow >= Rows) |
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
1308 wp->w_winrow = Rows - 1; |
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
1309 } |
29900
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
1310 if (wp->w_popup_pos == POPPOS_BOTTOM) |
30220
088a3715ea69
patch 9.0.0446: message window may be positioned too low
Bram Moolenaar <Bram@vim.org>
parents:
30190
diff
changeset
|
1311 { |
088a3715ea69
patch 9.0.0446: message window may be positioned too low
Bram Moolenaar <Bram@vim.org>
parents:
30190
diff
changeset
|
1312 // Assume that each buffer line takes one screen line, and one line |
088a3715ea69
patch 9.0.0446: message window may be positioned too low
Bram Moolenaar <Bram@vim.org>
parents:
30190
diff
changeset
|
1313 // for the top border. First make sure cmdline_row is valid, |
088a3715ea69
patch 9.0.0446: message window may be positioned too low
Bram Moolenaar <Bram@vim.org>
parents:
30190
diff
changeset
|
1314 // calling update_screen() will set it only later. |
088a3715ea69
patch 9.0.0446: message window may be positioned too low
Bram Moolenaar <Bram@vim.org>
parents:
30190
diff
changeset
|
1315 compute_cmdrow(); |
29966
5dfd4bd66ad8
patch 9.0.0321: cannot use the message popup window directly
Bram Moolenaar <Bram@vim.org>
parents:
29958
diff
changeset
|
1316 wp->w_winrow = MAX(cmdline_row |
5dfd4bd66ad8
patch 9.0.0321: cannot use the message popup window directly
Bram Moolenaar <Bram@vim.org>
parents:
29958
diff
changeset
|
1317 - wp->w_buffer->b_ml.ml_line_count - 1, 0); |
30220
088a3715ea69
patch 9.0.0446: message window may be positioned too low
Bram Moolenaar <Bram@vim.org>
parents:
30190
diff
changeset
|
1318 } |
16817
069ee8dc8c8d
patch 8.1.1410: popup_move() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16813
diff
changeset
|
1319 |
18432
ee8db42dacf6
patch 8.1.2210: using negative offset for popup_create() does not work
Bram Moolenaar <Bram@vim.org>
parents:
18398
diff
changeset
|
1320 if (!use_wantcol) |
16855
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
1321 center_hor = TRUE; |
17879
5d5b460926ca
patch 8.1.1936: not enough tests for text property popup window
Bram Moolenaar <Bram@vim.org>
parents:
17875
diff
changeset
|
1322 else if (wantcol > 0 && (wp->w_popup_pos == POPPOS_TOPLEFT |
5d5b460926ca
patch 8.1.1936: not enough tests for text property popup window
Bram Moolenaar <Bram@vim.org>
parents:
17875
diff
changeset
|
1323 || wp->w_popup_pos == POPPOS_BOTLEFT)) |
16855
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
1324 { |
17863
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1325 wp->w_wincol = wantcol - 1; |
19605
5ad7a406647a
patch 8.2.0359: popup_atcursor() may hang
Bram Moolenaar <Bram@vim.org>
parents:
19546
diff
changeset
|
1326 // Need to see at least one character after the decoration. |
5ad7a406647a
patch 8.2.0359: popup_atcursor() may hang
Bram Moolenaar <Bram@vim.org>
parents:
19546
diff
changeset
|
1327 if (wp->w_wincol > Columns - left_extra - 1) |
5ad7a406647a
patch 8.2.0359: popup_atcursor() may hang
Bram Moolenaar <Bram@vim.org>
parents:
19546
diff
changeset
|
1328 wp->w_wincol = Columns - left_extra - 1; |
16855
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
1329 } |
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
1330 } |
16817
069ee8dc8c8d
patch 8.1.1410: popup_move() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16813
diff
changeset
|
1331 |
16855
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
1332 // When centering or right aligned, use maximum width. |
16896
52fc577a087d
patch 8.1.1449: popup text truncated at end of screen
Bram Moolenaar <Bram@vim.org>
parents:
16892
diff
changeset
|
1333 // When left aligned use the space available, but shift to the left when we |
52fc577a087d
patch 8.1.1449: popup text truncated at end of screen
Bram Moolenaar <Bram@vim.org>
parents:
16892
diff
changeset
|
1334 // hit the right of the screen. |
17235
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
1335 maxspace = Columns - wp->w_wincol - left_extra; |
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
1336 maxwidth = maxspace; |
16837
18593056d8f1
patch 8.1.1420: popup window size only uses first line length
Bram Moolenaar <Bram@vim.org>
parents:
16833
diff
changeset
|
1337 if (wp->w_maxwidth > 0 && maxwidth > wp->w_maxwidth) |
16896
52fc577a087d
patch 8.1.1449: popup text truncated at end of screen
Bram Moolenaar <Bram@vim.org>
parents:
16892
diff
changeset
|
1338 { |
52fc577a087d
patch 8.1.1449: popup text truncated at end of screen
Bram Moolenaar <Bram@vim.org>
parents:
16892
diff
changeset
|
1339 allow_adjust_left = FALSE; |
16837
18593056d8f1
patch 8.1.1420: popup window size only uses first line length
Bram Moolenaar <Bram@vim.org>
parents:
16833
diff
changeset
|
1340 maxwidth = wp->w_maxwidth; |
16896
52fc577a087d
patch 8.1.1449: popup text truncated at end of screen
Bram Moolenaar <Bram@vim.org>
parents:
16892
diff
changeset
|
1341 } |
21514
27bbd918e70c
patch 8.2.1307: popup window width does not include number of sign columns
Bram Moolenaar <Bram@vim.org>
parents:
21506
diff
changeset
|
1342 |
27bbd918e70c
patch 8.2.1307: popup window width does not include number of sign columns
Bram Moolenaar <Bram@vim.org>
parents:
21506
diff
changeset
|
1343 if (wp->w_p_nu || wp->w_p_rnu) |
27bbd918e70c
patch 8.2.1307: popup window width does not include number of sign columns
Bram Moolenaar <Bram@vim.org>
parents:
21506
diff
changeset
|
1344 margin_width = number_width(wp) + 1; |
27bbd918e70c
patch 8.2.1307: popup window width does not include number of sign columns
Bram Moolenaar <Bram@vim.org>
parents:
21506
diff
changeset
|
1345 #ifdef FEAT_FOLDING |
27bbd918e70c
patch 8.2.1307: popup window width does not include number of sign columns
Bram Moolenaar <Bram@vim.org>
parents:
21506
diff
changeset
|
1346 margin_width += wp->w_p_fdc; |
27bbd918e70c
patch 8.2.1307: popup window width does not include number of sign columns
Bram Moolenaar <Bram@vim.org>
parents:
21506
diff
changeset
|
1347 #endif |
27bbd918e70c
patch 8.2.1307: popup window width does not include number of sign columns
Bram Moolenaar <Bram@vim.org>
parents:
21506
diff
changeset
|
1348 #ifdef FEAT_SIGNS |
27bbd918e70c
patch 8.2.1307: popup window width does not include number of sign columns
Bram Moolenaar <Bram@vim.org>
parents:
21506
diff
changeset
|
1349 if (signcolumn_on(wp)) |
27bbd918e70c
patch 8.2.1307: popup window width does not include number of sign columns
Bram Moolenaar <Bram@vim.org>
parents:
21506
diff
changeset
|
1350 margin_width += 2; |
27bbd918e70c
patch 8.2.1307: popup window width does not include number of sign columns
Bram Moolenaar <Bram@vim.org>
parents:
21506
diff
changeset
|
1351 #endif |
27bbd918e70c
patch 8.2.1307: popup window width does not include number of sign columns
Bram Moolenaar <Bram@vim.org>
parents:
21506
diff
changeset
|
1352 if (margin_width >= maxwidth) |
27bbd918e70c
patch 8.2.1307: popup window width does not include number of sign columns
Bram Moolenaar <Bram@vim.org>
parents:
21506
diff
changeset
|
1353 margin_width = maxwidth - 1; |
27bbd918e70c
patch 8.2.1307: popup window width does not include number of sign columns
Bram Moolenaar <Bram@vim.org>
parents:
21506
diff
changeset
|
1354 |
18492
41a5f241e9d5
patch 8.1.2240: popup window width changes when scrolling
Bram Moolenaar <Bram@vim.org>
parents:
18438
diff
changeset
|
1355 minwidth = wp->w_minwidth; |
19647
c8cb1a41f64c
patch 8.2.0380: tiny popup when creating a terminal popup without minwidth
Bram Moolenaar <Bram@vim.org>
parents:
19637
diff
changeset
|
1356 minheight = wp->w_minheight; |
c8cb1a41f64c
patch 8.2.0380: tiny popup when creating a terminal popup without minwidth
Bram Moolenaar <Bram@vim.org>
parents:
19637
diff
changeset
|
1357 #ifdef FEAT_TERMINAL |
c8cb1a41f64c
patch 8.2.0380: tiny popup when creating a terminal popup without minwidth
Bram Moolenaar <Bram@vim.org>
parents:
19637
diff
changeset
|
1358 // A terminal popup initially does not have content, use a default minimal |
c8cb1a41f64c
patch 8.2.0380: tiny popup when creating a terminal popup without minwidth
Bram Moolenaar <Bram@vim.org>
parents:
19637
diff
changeset
|
1359 // width of 20 characters and height of 5 lines. |
c8cb1a41f64c
patch 8.2.0380: tiny popup when creating a terminal popup without minwidth
Bram Moolenaar <Bram@vim.org>
parents:
19637
diff
changeset
|
1360 if (wp->w_buffer->b_term != NULL) |
c8cb1a41f64c
patch 8.2.0380: tiny popup when creating a terminal popup without minwidth
Bram Moolenaar <Bram@vim.org>
parents:
19637
diff
changeset
|
1361 { |
c8cb1a41f64c
patch 8.2.0380: tiny popup when creating a terminal popup without minwidth
Bram Moolenaar <Bram@vim.org>
parents:
19637
diff
changeset
|
1362 if (minwidth == 0) |
c8cb1a41f64c
patch 8.2.0380: tiny popup when creating a terminal popup without minwidth
Bram Moolenaar <Bram@vim.org>
parents:
19637
diff
changeset
|
1363 minwidth = 20; |
c8cb1a41f64c
patch 8.2.0380: tiny popup when creating a terminal popup without minwidth
Bram Moolenaar <Bram@vim.org>
parents:
19637
diff
changeset
|
1364 if (minheight == 0) |
c8cb1a41f64c
patch 8.2.0380: tiny popup when creating a terminal popup without minwidth
Bram Moolenaar <Bram@vim.org>
parents:
19637
diff
changeset
|
1365 minheight = 5; |
c8cb1a41f64c
patch 8.2.0380: tiny popup when creating a terminal popup without minwidth
Bram Moolenaar <Bram@vim.org>
parents:
19637
diff
changeset
|
1366 } |
c8cb1a41f64c
patch 8.2.0380: tiny popup when creating a terminal popup without minwidth
Bram Moolenaar <Bram@vim.org>
parents:
19637
diff
changeset
|
1367 #endif |
16837
18593056d8f1
patch 8.1.1420: popup window size only uses first line length
Bram Moolenaar <Bram@vim.org>
parents:
16833
diff
changeset
|
1368 |
21713
b997e872ff95
patch 8.2.1406: popupwindow lacks scrollbar if no "maxheight" is used
Bram Moolenaar <Bram@vim.org>
parents:
21514
diff
changeset
|
1369 if (wp->w_maxheight > 0) |
b997e872ff95
patch 8.2.1406: popupwindow lacks scrollbar if no "maxheight" is used
Bram Moolenaar <Bram@vim.org>
parents:
21514
diff
changeset
|
1370 maxheight = wp->w_maxheight; |
30027
7e787f94852b
patch 9.0.0351: message window may obscure the command line
Bram Moolenaar <Bram@vim.org>
parents:
30025
diff
changeset
|
1371 else if (wp->w_popup_pos == POPPOS_BOTTOM) |
7e787f94852b
patch 9.0.0351: message window may obscure the command line
Bram Moolenaar <Bram@vim.org>
parents:
30025
diff
changeset
|
1372 maxheight = cmdline_row - 1; |
21713
b997e872ff95
patch 8.2.1406: popupwindow lacks scrollbar if no "maxheight" is used
Bram Moolenaar <Bram@vim.org>
parents:
21514
diff
changeset
|
1373 |
17047
6400d1ad5e4b
patch 8.1.1523: cannot show range of buffer lines in popup window
Bram Moolenaar <Bram@vim.org>
parents:
17045
diff
changeset
|
1374 // start at the desired first line |
17905
fb773f73a4be
patch 8.1.1949: cannot scroll a popup window to the very bottom
Bram Moolenaar <Bram@vim.org>
parents:
17897
diff
changeset
|
1375 if (wp->w_firstline > 0) |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1376 wp->w_topline = wp->w_firstline; |
18027
56032a704448
patch 8.1.2009: cursorline highlighting not updated in popup window
Bram Moolenaar <Bram@vim.org>
parents:
18004
diff
changeset
|
1377 if (wp->w_topline < 1) |
56032a704448
patch 8.1.2009: cursorline highlighting not updated in popup window
Bram Moolenaar <Bram@vim.org>
parents:
18004
diff
changeset
|
1378 wp->w_topline = 1; |
56032a704448
patch 8.1.2009: cursorline highlighting not updated in popup window
Bram Moolenaar <Bram@vim.org>
parents:
18004
diff
changeset
|
1379 else if (wp->w_topline > wp->w_buffer->b_ml.ml_line_count) |
17047
6400d1ad5e4b
patch 8.1.1523: cannot show range of buffer lines in popup window
Bram Moolenaar <Bram@vim.org>
parents:
17045
diff
changeset
|
1380 wp->w_topline = wp->w_buffer->b_ml.ml_line_count; |
6400d1ad5e4b
patch 8.1.1523: cannot show range of buffer lines in popup window
Bram Moolenaar <Bram@vim.org>
parents:
17045
diff
changeset
|
1381 |
16837
18593056d8f1
patch 8.1.1420: popup window size only uses first line length
Bram Moolenaar <Bram@vim.org>
parents:
16833
diff
changeset
|
1382 // Compute width based on longest text line and the 'wrap' option. |
17107
0001d10a7661
patch 8.1.1553: not easy to change the text in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17101
diff
changeset
|
1383 // Use a minimum width of one, so that something shows when there is no |
0001d10a7661
patch 8.1.1553: not easy to change the text in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17101
diff
changeset
|
1384 // text. |
17905
fb773f73a4be
patch 8.1.1949: cannot scroll a popup window to the very bottom
Bram Moolenaar <Bram@vim.org>
parents:
17897
diff
changeset
|
1385 // When "firstline" is -1 then start with the last buffer line and go |
fb773f73a4be
patch 8.1.1949: cannot scroll a popup window to the very bottom
Bram Moolenaar <Bram@vim.org>
parents:
17897
diff
changeset
|
1386 // backwards. |
16837
18593056d8f1
patch 8.1.1420: popup window size only uses first line length
Bram Moolenaar <Bram@vim.org>
parents:
16833
diff
changeset
|
1387 // TODO: more accurate wrapping |
17107
0001d10a7661
patch 8.1.1553: not easy to change the text in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17101
diff
changeset
|
1388 wp->w_width = 1; |
17905
fb773f73a4be
patch 8.1.1949: cannot scroll a popup window to the very bottom
Bram Moolenaar <Bram@vim.org>
parents:
17897
diff
changeset
|
1389 if (wp->w_firstline < 0) |
fb773f73a4be
patch 8.1.1949: cannot scroll a popup window to the very bottom
Bram Moolenaar <Bram@vim.org>
parents:
17897
diff
changeset
|
1390 lnum = wp->w_buffer->b_ml.ml_line_count; |
fb773f73a4be
patch 8.1.1949: cannot scroll a popup window to the very bottom
Bram Moolenaar <Bram@vim.org>
parents:
17897
diff
changeset
|
1391 else |
fb773f73a4be
patch 8.1.1949: cannot scroll a popup window to the very bottom
Bram Moolenaar <Bram@vim.org>
parents:
17897
diff
changeset
|
1392 lnum = wp->w_topline; |
fb773f73a4be
patch 8.1.1949: cannot scroll a popup window to the very bottom
Bram Moolenaar <Bram@vim.org>
parents:
17897
diff
changeset
|
1393 while (lnum >= 1 && lnum <= wp->w_buffer->b_ml.ml_line_count) |
16837
18593056d8f1
patch 8.1.1420: popup window size only uses first line length
Bram Moolenaar <Bram@vim.org>
parents:
16833
diff
changeset
|
1394 { |
17442
57b9fca8c7d2
patch 8.1.1719: popup too wide when 'showbreak' is set
Bram Moolenaar <Bram@vim.org>
parents:
17440
diff
changeset
|
1395 int len; |
57b9fca8c7d2
patch 8.1.1719: popup too wide when 'showbreak' is set
Bram Moolenaar <Bram@vim.org>
parents:
17440
diff
changeset
|
1396 int w_width = wp->w_width; |
57b9fca8c7d2
patch 8.1.1719: popup too wide when 'showbreak' is set
Bram Moolenaar <Bram@vim.org>
parents:
17440
diff
changeset
|
1397 |
57b9fca8c7d2
patch 8.1.1719: popup too wide when 'showbreak' is set
Bram Moolenaar <Bram@vim.org>
parents:
17440
diff
changeset
|
1398 // Count Tabs for what they are worth and compute the length based on |
57b9fca8c7d2
patch 8.1.1719: popup too wide when 'showbreak' is set
Bram Moolenaar <Bram@vim.org>
parents:
17440
diff
changeset
|
1399 // the maximum width (matters when 'showbreak' is set). |
21514
27bbd918e70c
patch 8.2.1307: popup window width does not include number of sign columns
Bram Moolenaar <Bram@vim.org>
parents:
21506
diff
changeset
|
1400 // "margin_width" is added to "len" where it matters. |
17442
57b9fca8c7d2
patch 8.1.1719: popup too wide when 'showbreak' is set
Bram Moolenaar <Bram@vim.org>
parents:
17440
diff
changeset
|
1401 if (wp->w_width < maxwidth) |
57b9fca8c7d2
patch 8.1.1719: popup too wide when 'showbreak' is set
Bram Moolenaar <Bram@vim.org>
parents:
17440
diff
changeset
|
1402 wp->w_width = maxwidth; |
29451
057c26b5c33a
patch 9.0.0067: cannot show virtual text
Bram Moolenaar <Bram@vim.org>
parents:
29442
diff
changeset
|
1403 len = win_linetabsize(wp, lnum, ml_get_buf(wp->w_buffer, lnum, FALSE), |
17314
b60402471f69
patch 8.1.1656: popup window width is wrong when using Tabs
Bram Moolenaar <Bram@vim.org>
parents:
17300
diff
changeset
|
1404 (colnr_T)MAXCOL); |
17442
57b9fca8c7d2
patch 8.1.1719: popup too wide when 'showbreak' is set
Bram Moolenaar <Bram@vim.org>
parents:
17440
diff
changeset
|
1405 wp->w_width = w_width; |
16837
18593056d8f1
patch 8.1.1420: popup window size only uses first line length
Bram Moolenaar <Bram@vim.org>
parents:
16833
diff
changeset
|
1406 |
16896
52fc577a087d
patch 8.1.1449: popup text truncated at end of screen
Bram Moolenaar <Bram@vim.org>
parents:
16892
diff
changeset
|
1407 if (wp->w_p_wrap) |
16837
18593056d8f1
patch 8.1.1420: popup window size only uses first line length
Bram Moolenaar <Bram@vim.org>
parents:
16833
diff
changeset
|
1408 { |
21514
27bbd918e70c
patch 8.2.1307: popup window width does not include number of sign columns
Bram Moolenaar <Bram@vim.org>
parents:
21506
diff
changeset
|
1409 while (len + margin_width > maxwidth) |
16896
52fc577a087d
patch 8.1.1449: popup text truncated at end of screen
Bram Moolenaar <Bram@vim.org>
parents:
16892
diff
changeset
|
1410 { |
52fc577a087d
patch 8.1.1449: popup text truncated at end of screen
Bram Moolenaar <Bram@vim.org>
parents:
16892
diff
changeset
|
1411 ++wrapped; |
21514
27bbd918e70c
patch 8.2.1307: popup window width does not include number of sign columns
Bram Moolenaar <Bram@vim.org>
parents:
21506
diff
changeset
|
1412 len -= maxwidth - margin_width; |
16896
52fc577a087d
patch 8.1.1449: popup text truncated at end of screen
Bram Moolenaar <Bram@vim.org>
parents:
16892
diff
changeset
|
1413 wp->w_width = maxwidth; |
18339
a776385eac9f
patch 8.1.2164: stuck when using "j" in a popupwin with popup_filter_menu
Bram Moolenaar <Bram@vim.org>
parents:
18239
diff
changeset
|
1414 used_maxwidth = TRUE; |
16896
52fc577a087d
patch 8.1.1449: popup text truncated at end of screen
Bram Moolenaar <Bram@vim.org>
parents:
16892
diff
changeset
|
1415 } |
52fc577a087d
patch 8.1.1449: popup text truncated at end of screen
Bram Moolenaar <Bram@vim.org>
parents:
16892
diff
changeset
|
1416 } |
21514
27bbd918e70c
patch 8.2.1307: popup window width does not include number of sign columns
Bram Moolenaar <Bram@vim.org>
parents:
21506
diff
changeset
|
1417 else if (len + margin_width > maxwidth |
16896
52fc577a087d
patch 8.1.1449: popup text truncated at end of screen
Bram Moolenaar <Bram@vim.org>
parents:
16892
diff
changeset
|
1418 && allow_adjust_left |
52fc577a087d
patch 8.1.1449: popup text truncated at end of screen
Bram Moolenaar <Bram@vim.org>
parents:
16892
diff
changeset
|
1419 && (wp->w_popup_pos == POPPOS_TOPLEFT |
52fc577a087d
patch 8.1.1449: popup text truncated at end of screen
Bram Moolenaar <Bram@vim.org>
parents:
16892
diff
changeset
|
1420 || wp->w_popup_pos == POPPOS_BOTLEFT)) |
52fc577a087d
patch 8.1.1449: popup text truncated at end of screen
Bram Moolenaar <Bram@vim.org>
parents:
16892
diff
changeset
|
1421 { |
52fc577a087d
patch 8.1.1449: popup text truncated at end of screen
Bram Moolenaar <Bram@vim.org>
parents:
16892
diff
changeset
|
1422 // adjust leftwise to fit text on screen |
21514
27bbd918e70c
patch 8.2.1307: popup window width does not include number of sign columns
Bram Moolenaar <Bram@vim.org>
parents:
21506
diff
changeset
|
1423 int shift_by = len + margin_width - maxwidth; |
16896
52fc577a087d
patch 8.1.1449: popup text truncated at end of screen
Bram Moolenaar <Bram@vim.org>
parents:
16892
diff
changeset
|
1424 |
17101
1a23650f8da5
patch 8.1.1550: when a popup has left padding text may be cut off
Bram Moolenaar <Bram@vim.org>
parents:
17097
diff
changeset
|
1425 if (shift_by > wp->w_wincol) |
16896
52fc577a087d
patch 8.1.1449: popup text truncated at end of screen
Bram Moolenaar <Bram@vim.org>
parents:
16892
diff
changeset
|
1426 { |
52fc577a087d
patch 8.1.1449: popup text truncated at end of screen
Bram Moolenaar <Bram@vim.org>
parents:
16892
diff
changeset
|
1427 int truncate_shift = shift_by - wp->w_wincol; |
17101
1a23650f8da5
patch 8.1.1550: when a popup has left padding text may be cut off
Bram Moolenaar <Bram@vim.org>
parents:
17097
diff
changeset
|
1428 |
16896
52fc577a087d
patch 8.1.1449: popup text truncated at end of screen
Bram Moolenaar <Bram@vim.org>
parents:
16892
diff
changeset
|
1429 len -= truncate_shift; |
52fc577a087d
patch 8.1.1449: popup text truncated at end of screen
Bram Moolenaar <Bram@vim.org>
parents:
16892
diff
changeset
|
1430 shift_by -= truncate_shift; |
52fc577a087d
patch 8.1.1449: popup text truncated at end of screen
Bram Moolenaar <Bram@vim.org>
parents:
16892
diff
changeset
|
1431 } |
52fc577a087d
patch 8.1.1449: popup text truncated at end of screen
Bram Moolenaar <Bram@vim.org>
parents:
16892
diff
changeset
|
1432 |
52fc577a087d
patch 8.1.1449: popup text truncated at end of screen
Bram Moolenaar <Bram@vim.org>
parents:
16892
diff
changeset
|
1433 wp->w_wincol -= shift_by; |
52fc577a087d
patch 8.1.1449: popup text truncated at end of screen
Bram Moolenaar <Bram@vim.org>
parents:
16892
diff
changeset
|
1434 maxwidth += shift_by; |
16837
18593056d8f1
patch 8.1.1420: popup window size only uses first line length
Bram Moolenaar <Bram@vim.org>
parents:
16833
diff
changeset
|
1435 wp->w_width = maxwidth; |
18593056d8f1
patch 8.1.1420: popup window size only uses first line length
Bram Moolenaar <Bram@vim.org>
parents:
16833
diff
changeset
|
1436 } |
21514
27bbd918e70c
patch 8.2.1307: popup window width does not include number of sign columns
Bram Moolenaar <Bram@vim.org>
parents:
21506
diff
changeset
|
1437 if (wp->w_width < len + margin_width) |
17354
102ed3a26a5d
patch 8.1.1676: "maxwidth" of popup window does not always work properly
Bram Moolenaar <Bram@vim.org>
parents:
17348
diff
changeset
|
1438 { |
21514
27bbd918e70c
patch 8.2.1307: popup window width does not include number of sign columns
Bram Moolenaar <Bram@vim.org>
parents:
21506
diff
changeset
|
1439 wp->w_width = len + margin_width; |
17354
102ed3a26a5d
patch 8.1.1676: "maxwidth" of popup window does not always work properly
Bram Moolenaar <Bram@vim.org>
parents:
17348
diff
changeset
|
1440 if (wp->w_maxwidth > 0 && wp->w_width > wp->w_maxwidth) |
102ed3a26a5d
patch 8.1.1676: "maxwidth" of popup window does not always work properly
Bram Moolenaar <Bram@vim.org>
parents:
17348
diff
changeset
|
1441 wp->w_width = wp->w_maxwidth; |
102ed3a26a5d
patch 8.1.1676: "maxwidth" of popup window does not always work properly
Bram Moolenaar <Bram@vim.org>
parents:
17348
diff
changeset
|
1442 } |
18492
41a5f241e9d5
patch 8.1.2240: popup window width changes when scrolling
Bram Moolenaar <Bram@vim.org>
parents:
18438
diff
changeset
|
1443 |
41a5f241e9d5
patch 8.1.2240: popup window width changes when scrolling
Bram Moolenaar <Bram@vim.org>
parents:
18438
diff
changeset
|
1444 if (wp->w_firstline < 0) |
41a5f241e9d5
patch 8.1.2240: popup window width changes when scrolling
Bram Moolenaar <Bram@vim.org>
parents:
18438
diff
changeset
|
1445 --lnum; |
41a5f241e9d5
patch 8.1.2240: popup window width changes when scrolling
Bram Moolenaar <Bram@vim.org>
parents:
18438
diff
changeset
|
1446 else |
41a5f241e9d5
patch 8.1.2240: popup window width changes when scrolling
Bram Moolenaar <Bram@vim.org>
parents:
18438
diff
changeset
|
1447 ++lnum; |
41a5f241e9d5
patch 8.1.2240: popup window width changes when scrolling
Bram Moolenaar <Bram@vim.org>
parents:
18438
diff
changeset
|
1448 |
17047
6400d1ad5e4b
patch 8.1.1523: cannot show range of buffer lines in popup window
Bram Moolenaar <Bram@vim.org>
parents:
17045
diff
changeset
|
1449 // do not use the width of lines we're not going to show |
21713
b997e872ff95
patch 8.2.1406: popupwindow lacks scrollbar if no "maxheight" is used
Bram Moolenaar <Bram@vim.org>
parents:
21514
diff
changeset
|
1450 if (maxheight > 0 |
17905
fb773f73a4be
patch 8.1.1949: cannot scroll a popup window to the very bottom
Bram Moolenaar <Bram@vim.org>
parents:
17897
diff
changeset
|
1451 && (wp->w_firstline >= 0 |
fb773f73a4be
patch 8.1.1949: cannot scroll a popup window to the very bottom
Bram Moolenaar <Bram@vim.org>
parents:
17897
diff
changeset
|
1452 ? lnum - wp->w_topline |
fb773f73a4be
patch 8.1.1949: cannot scroll a popup window to the very bottom
Bram Moolenaar <Bram@vim.org>
parents:
17897
diff
changeset
|
1453 : wp->w_buffer->b_ml.ml_line_count - lnum) |
21713
b997e872ff95
patch 8.2.1406: popupwindow lacks scrollbar if no "maxheight" is used
Bram Moolenaar <Bram@vim.org>
parents:
21514
diff
changeset
|
1454 + wrapped >= maxheight) |
17047
6400d1ad5e4b
patch 8.1.1523: cannot show range of buffer lines in popup window
Bram Moolenaar <Bram@vim.org>
parents:
17045
diff
changeset
|
1455 break; |
16837
18593056d8f1
patch 8.1.1420: popup window size only uses first line length
Bram Moolenaar <Bram@vim.org>
parents:
16833
diff
changeset
|
1456 } |
18593056d8f1
patch 8.1.1420: popup window size only uses first line length
Bram Moolenaar <Bram@vim.org>
parents:
16833
diff
changeset
|
1457 |
17905
fb773f73a4be
patch 8.1.1949: cannot scroll a popup window to the very bottom
Bram Moolenaar <Bram@vim.org>
parents:
17897
diff
changeset
|
1458 if (wp->w_firstline < 0) |
28550
f59db757e4ef
patch 8.2.4799: popup does not use correct topline
Bram Moolenaar <Bram@vim.org>
parents:
28319
diff
changeset
|
1459 wp->w_topline = lnum + 1; |
17905
fb773f73a4be
patch 8.1.1949: cannot scroll a popup window to the very bottom
Bram Moolenaar <Bram@vim.org>
parents:
17897
diff
changeset
|
1460 |
17180
8581779aa16f
patch 8.1.1589: popup window does not indicate scroll position
Bram Moolenaar <Bram@vim.org>
parents:
17174
diff
changeset
|
1461 wp->w_has_scrollbar = wp->w_want_scrollbar |
8581779aa16f
patch 8.1.1589: popup window does not indicate scroll position
Bram Moolenaar <Bram@vim.org>
parents:
17174
diff
changeset
|
1462 && (wp->w_topline > 1 || lnum <= wp->w_buffer->b_ml.ml_line_count); |
19265
ce8c47ed54e5
patch 8.2.0191: cannot put a terminal in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
19241
diff
changeset
|
1463 #ifdef FEAT_TERMINAL |
29032
361b46a07f5e
patch 8.2.5038: a finished terminal in a popup window does not show scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
28778
diff
changeset
|
1464 if (wp->w_buffer->b_term != NULL && !term_is_finished(wp->w_buffer)) |
361b46a07f5e
patch 8.2.5038: a finished terminal in a popup window does not show scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
28778
diff
changeset
|
1465 // Terminal window with running job never has a scrollbar, adjusts to |
361b46a07f5e
patch 8.2.5038: a finished terminal in a popup window does not show scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
28778
diff
changeset
|
1466 // window height. |
19265
ce8c47ed54e5
patch 8.2.0191: cannot put a terminal in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
19241
diff
changeset
|
1467 wp->w_has_scrollbar = FALSE; |
ce8c47ed54e5
patch 8.2.0191: cannot put a terminal in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
19241
diff
changeset
|
1468 #endif |
28279
8ef5c996df31
patch 8.2.4665: popup with "minwidth" and scrollbar not updated properly
Bram Moolenaar <Bram@vim.org>
parents:
28187
diff
changeset
|
1469 maxwidth_no_scrollbar = maxwidth; |
17551
8cca2654d459
patch 8.1.1773: the preview popup window may be too far to the right
Bram Moolenaar <Bram@vim.org>
parents:
17545
diff
changeset
|
1470 if (wp->w_has_scrollbar) |
17821
fe92aaf166c1
patch 8.1.1907: wrong position for info popup with scrollbar on the left
Bram Moolenaar <Bram@vim.org>
parents:
17817
diff
changeset
|
1471 { |
17551
8cca2654d459
patch 8.1.1773: the preview popup window may be too far to the right
Bram Moolenaar <Bram@vim.org>
parents:
17545
diff
changeset
|
1472 ++right_extra; |
17821
fe92aaf166c1
patch 8.1.1907: wrong position for info popup with scrollbar on the left
Bram Moolenaar <Bram@vim.org>
parents:
17817
diff
changeset
|
1473 ++extra_width; |
18492
41a5f241e9d5
patch 8.1.2240: popup window width changes when scrolling
Bram Moolenaar <Bram@vim.org>
parents:
18438
diff
changeset
|
1474 // make space for the scrollbar if needed, when lines wrap and when |
41a5f241e9d5
patch 8.1.2240: popup window width changes when scrolling
Bram Moolenaar <Bram@vim.org>
parents:
18438
diff
changeset
|
1475 // applying minwidth |
41a5f241e9d5
patch 8.1.2240: popup window width changes when scrolling
Bram Moolenaar <Bram@vim.org>
parents:
18438
diff
changeset
|
1476 if (maxwidth + right_extra >= maxspace |
41a5f241e9d5
patch 8.1.2240: popup window width changes when scrolling
Bram Moolenaar <Bram@vim.org>
parents:
18438
diff
changeset
|
1477 && (used_maxwidth || (minwidth > 0 && wp->w_width < minwidth))) |
41a5f241e9d5
patch 8.1.2240: popup window width changes when scrolling
Bram Moolenaar <Bram@vim.org>
parents:
18438
diff
changeset
|
1478 maxwidth -= wp->w_popup_padding[1] + 1; |
17821
fe92aaf166c1
patch 8.1.1907: wrong position for info popup with scrollbar on the left
Bram Moolenaar <Bram@vim.org>
parents:
17817
diff
changeset
|
1479 } |
17180
8581779aa16f
patch 8.1.1589: popup window does not indicate scroll position
Bram Moolenaar <Bram@vim.org>
parents:
17174
diff
changeset
|
1480 |
17119
b439e096a011
patch 8.1.1559: popup window title property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17117
diff
changeset
|
1481 if (wp->w_popup_title != NULL && *wp->w_popup_title != NUL) |
b439e096a011
patch 8.1.1559: popup window title property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17117
diff
changeset
|
1482 { |
b439e096a011
patch 8.1.1559: popup window title property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17117
diff
changeset
|
1483 int title_len = vim_strsize(wp->w_popup_title) + 2 - extra_width; |
b439e096a011
patch 8.1.1559: popup window title property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17117
diff
changeset
|
1484 |
b439e096a011
patch 8.1.1559: popup window title property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17117
diff
changeset
|
1485 if (minwidth < title_len) |
b439e096a011
patch 8.1.1559: popup window title property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17117
diff
changeset
|
1486 minwidth = title_len; |
b439e096a011
patch 8.1.1559: popup window title property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17117
diff
changeset
|
1487 } |
b439e096a011
patch 8.1.1559: popup window title property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17117
diff
changeset
|
1488 |
b439e096a011
patch 8.1.1559: popup window title property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17117
diff
changeset
|
1489 if (minwidth > 0 && wp->w_width < minwidth) |
b439e096a011
patch 8.1.1559: popup window title property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17117
diff
changeset
|
1490 wp->w_width = minwidth; |
16837
18593056d8f1
patch 8.1.1420: popup window size only uses first line length
Bram Moolenaar <Bram@vim.org>
parents:
16833
diff
changeset
|
1491 if (wp->w_width > maxwidth) |
17235
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
1492 { |
17551
8cca2654d459
patch 8.1.1773: the preview popup window may be too far to the right
Bram Moolenaar <Bram@vim.org>
parents:
17545
diff
changeset
|
1493 if (wp->w_width > maxspace && !wp->w_p_wrap) |
17235
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
1494 // some columns cut off on the right |
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
1495 wp->w_popup_rightoff = wp->w_width - maxspace; |
28279
8ef5c996df31
patch 8.2.4665: popup with "minwidth" and scrollbar not updated properly
Bram Moolenaar <Bram@vim.org>
parents:
28187
diff
changeset
|
1496 |
8ef5c996df31
patch 8.2.4665: popup with "minwidth" and scrollbar not updated properly
Bram Moolenaar <Bram@vim.org>
parents:
28187
diff
changeset
|
1497 // If the window doesn't fit because 'minwidth' is set then the |
8ef5c996df31
patch 8.2.4665: popup with "minwidth" and scrollbar not updated properly
Bram Moolenaar <Bram@vim.org>
parents:
28187
diff
changeset
|
1498 // scrollbar is at the far right of the screen, use the size without |
8ef5c996df31
patch 8.2.4665: popup with "minwidth" and scrollbar not updated properly
Bram Moolenaar <Bram@vim.org>
parents:
28187
diff
changeset
|
1499 // the scrollbar. |
8ef5c996df31
patch 8.2.4665: popup with "minwidth" and scrollbar not updated properly
Bram Moolenaar <Bram@vim.org>
parents:
28187
diff
changeset
|
1500 if (wp->w_has_scrollbar && wp->w_minwidth > 0) |
8ef5c996df31
patch 8.2.4665: popup with "minwidth" and scrollbar not updated properly
Bram Moolenaar <Bram@vim.org>
parents:
28187
diff
changeset
|
1501 { |
8ef5c996df31
patch 8.2.4665: popup with "minwidth" and scrollbar not updated properly
Bram Moolenaar <Bram@vim.org>
parents:
28187
diff
changeset
|
1502 int off = wp->w_width - maxwidth; |
8ef5c996df31
patch 8.2.4665: popup with "minwidth" and scrollbar not updated properly
Bram Moolenaar <Bram@vim.org>
parents:
28187
diff
changeset
|
1503 |
8ef5c996df31
patch 8.2.4665: popup with "minwidth" and scrollbar not updated properly
Bram Moolenaar <Bram@vim.org>
parents:
28187
diff
changeset
|
1504 if (off > right_extra) |
8ef5c996df31
patch 8.2.4665: popup with "minwidth" and scrollbar not updated properly
Bram Moolenaar <Bram@vim.org>
parents:
28187
diff
changeset
|
1505 extra_width -= right_extra; |
8ef5c996df31
patch 8.2.4665: popup with "minwidth" and scrollbar not updated properly
Bram Moolenaar <Bram@vim.org>
parents:
28187
diff
changeset
|
1506 else |
8ef5c996df31
patch 8.2.4665: popup with "minwidth" and scrollbar not updated properly
Bram Moolenaar <Bram@vim.org>
parents:
28187
diff
changeset
|
1507 extra_width -= off; |
8ef5c996df31
patch 8.2.4665: popup with "minwidth" and scrollbar not updated properly
Bram Moolenaar <Bram@vim.org>
parents:
28187
diff
changeset
|
1508 wp->w_width = maxwidth_no_scrollbar; |
8ef5c996df31
patch 8.2.4665: popup with "minwidth" and scrollbar not updated properly
Bram Moolenaar <Bram@vim.org>
parents:
28187
diff
changeset
|
1509 } |
8ef5c996df31
patch 8.2.4665: popup with "minwidth" and scrollbar not updated properly
Bram Moolenaar <Bram@vim.org>
parents:
28187
diff
changeset
|
1510 else |
8ef5c996df31
patch 8.2.4665: popup with "minwidth" and scrollbar not updated properly
Bram Moolenaar <Bram@vim.org>
parents:
28187
diff
changeset
|
1511 { |
8ef5c996df31
patch 8.2.4665: popup with "minwidth" and scrollbar not updated properly
Bram Moolenaar <Bram@vim.org>
parents:
28187
diff
changeset
|
1512 wp->w_width = maxwidth; |
8ef5c996df31
patch 8.2.4665: popup with "minwidth" and scrollbar not updated properly
Bram Moolenaar <Bram@vim.org>
parents:
28187
diff
changeset
|
1513 |
8ef5c996df31
patch 8.2.4665: popup with "minwidth" and scrollbar not updated properly
Bram Moolenaar <Bram@vim.org>
parents:
28187
diff
changeset
|
1514 // when adding a scrollbar below need to adjust the width |
8ef5c996df31
patch 8.2.4665: popup with "minwidth" and scrollbar not updated properly
Bram Moolenaar <Bram@vim.org>
parents:
28187
diff
changeset
|
1515 width_with_scrollbar = maxwidth_no_scrollbar - right_extra; |
8ef5c996df31
patch 8.2.4665: popup with "minwidth" and scrollbar not updated properly
Bram Moolenaar <Bram@vim.org>
parents:
28187
diff
changeset
|
1516 } |
17235
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
1517 } |
16855
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
1518 if (center_hor) |
17117
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
1519 { |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
1520 wp->w_wincol = (Columns - wp->w_width - extra_width) / 2; |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
1521 if (wp->w_wincol < 0) |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
1522 wp->w_wincol = 0; |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
1523 } |
16855
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
1524 else if (wp->w_popup_pos == POPPOS_BOTRIGHT |
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
1525 || wp->w_popup_pos == POPPOS_TOPRIGHT) |
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
1526 { |
17863
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1527 int leftoff = wantcol - (wp->w_width + extra_width); |
17206
8ca93f88b84a
patch 8.1.1602: popup window cannot overflow on the left or right
Bram Moolenaar <Bram@vim.org>
parents:
17202
diff
changeset
|
1528 |
16855
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
1529 // Right aligned: move to the right if needed. |
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
1530 // No truncation, because that would change the height. |
17206
8ca93f88b84a
patch 8.1.1602: popup window cannot overflow on the left or right
Bram Moolenaar <Bram@vim.org>
parents:
17202
diff
changeset
|
1531 if (leftoff >= 0) |
8ca93f88b84a
patch 8.1.1602: popup window cannot overflow on the left or right
Bram Moolenaar <Bram@vim.org>
parents:
17202
diff
changeset
|
1532 wp->w_wincol = leftoff; |
8ca93f88b84a
patch 8.1.1602: popup window cannot overflow on the left or right
Bram Moolenaar <Bram@vim.org>
parents:
17202
diff
changeset
|
1533 else if (wp->w_popup_fixed) |
8ca93f88b84a
patch 8.1.1602: popup window cannot overflow on the left or right
Bram Moolenaar <Bram@vim.org>
parents:
17202
diff
changeset
|
1534 { |
8ca93f88b84a
patch 8.1.1602: popup window cannot overflow on the left or right
Bram Moolenaar <Bram@vim.org>
parents:
17202
diff
changeset
|
1535 // "col" specifies the right edge, but popup doesn't fit, skip some |
17235
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
1536 // columns when displaying the window, minus left border and |
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
1537 // padding. |
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
1538 if (-leftoff > left_extra) |
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
1539 wp->w_leftcol = -leftoff - left_extra; |
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
1540 wp->w_width -= wp->w_leftcol; |
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
1541 wp->w_popup_leftoff = -leftoff; |
17206
8ca93f88b84a
patch 8.1.1602: popup window cannot overflow on the left or right
Bram Moolenaar <Bram@vim.org>
parents:
17202
diff
changeset
|
1542 if (wp->w_width < 0) |
8ca93f88b84a
patch 8.1.1602: popup window cannot overflow on the left or right
Bram Moolenaar <Bram@vim.org>
parents:
17202
diff
changeset
|
1543 wp->w_width = 0; |
8ca93f88b84a
patch 8.1.1602: popup window cannot overflow on the left or right
Bram Moolenaar <Bram@vim.org>
parents:
17202
diff
changeset
|
1544 } |
16855
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
1545 } |
16817
069ee8dc8c8d
patch 8.1.1410: popup_move() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16813
diff
changeset
|
1546 |
17563
cc2c4179427c
patch 8.1.1779: not showing the popup window right border is confusing
Bram Moolenaar <Bram@vim.org>
parents:
17561
diff
changeset
|
1547 if (wp->w_p_wrap || (!wp->w_popup_fixed |
cc2c4179427c
patch 8.1.1779: not showing the popup window right border is confusing
Bram Moolenaar <Bram@vim.org>
parents:
17561
diff
changeset
|
1548 && (wp->w_popup_pos == POPPOS_TOPLEFT |
cc2c4179427c
patch 8.1.1779: not showing the popup window right border is confusing
Bram Moolenaar <Bram@vim.org>
parents:
17561
diff
changeset
|
1549 || wp->w_popup_pos == POPPOS_BOTLEFT))) |
17551
8cca2654d459
patch 8.1.1773: the preview popup window may be too far to the right
Bram Moolenaar <Bram@vim.org>
parents:
17545
diff
changeset
|
1550 { |
8cca2654d459
patch 8.1.1773: the preview popup window may be too far to the right
Bram Moolenaar <Bram@vim.org>
parents:
17545
diff
changeset
|
1551 int want_col = 0; |
8cca2654d459
patch 8.1.1773: the preview popup window may be too far to the right
Bram Moolenaar <Bram@vim.org>
parents:
17545
diff
changeset
|
1552 |
17561
724370d05e79
patch 8.1.1778: not showing the popup window right border is confusing
Bram Moolenaar <Bram@vim.org>
parents:
17551
diff
changeset
|
1553 // try to show the right border and any scrollbar |
724370d05e79
patch 8.1.1778: not showing the popup window right border is confusing
Bram Moolenaar <Bram@vim.org>
parents:
17551
diff
changeset
|
1554 want_col = left_extra + wp->w_width + right_extra; |
17551
8cca2654d459
patch 8.1.1773: the preview popup window may be too far to the right
Bram Moolenaar <Bram@vim.org>
parents:
17545
diff
changeset
|
1555 if (want_col > 0 && wp->w_wincol > 0 |
8cca2654d459
patch 8.1.1773: the preview popup window may be too far to the right
Bram Moolenaar <Bram@vim.org>
parents:
17545
diff
changeset
|
1556 && wp->w_wincol + want_col >= Columns) |
8cca2654d459
patch 8.1.1773: the preview popup window may be too far to the right
Bram Moolenaar <Bram@vim.org>
parents:
17545
diff
changeset
|
1557 { |
8cca2654d459
patch 8.1.1773: the preview popup window may be too far to the right
Bram Moolenaar <Bram@vim.org>
parents:
17545
diff
changeset
|
1558 wp->w_wincol = Columns - want_col; |
8cca2654d459
patch 8.1.1773: the preview popup window may be too far to the right
Bram Moolenaar <Bram@vim.org>
parents:
17545
diff
changeset
|
1559 if (wp->w_wincol < 0) |
8cca2654d459
patch 8.1.1773: the preview popup window may be too far to the right
Bram Moolenaar <Bram@vim.org>
parents:
17545
diff
changeset
|
1560 wp->w_wincol = 0; |
8cca2654d459
patch 8.1.1773: the preview popup window may be too far to the right
Bram Moolenaar <Bram@vim.org>
parents:
17545
diff
changeset
|
1561 } |
8cca2654d459
patch 8.1.1773: the preview popup window may be too far to the right
Bram Moolenaar <Bram@vim.org>
parents:
17545
diff
changeset
|
1562 } |
8cca2654d459
patch 8.1.1773: the preview popup window may be too far to the right
Bram Moolenaar <Bram@vim.org>
parents:
17545
diff
changeset
|
1563 |
17047
6400d1ad5e4b
patch 8.1.1523: cannot show range of buffer lines in popup window
Bram Moolenaar <Bram@vim.org>
parents:
17045
diff
changeset
|
1564 wp->w_height = wp->w_buffer->b_ml.ml_line_count - wp->w_topline |
6400d1ad5e4b
patch 8.1.1523: cannot show range of buffer lines in popup window
Bram Moolenaar <Bram@vim.org>
parents:
17045
diff
changeset
|
1565 + 1 + wrapped; |
19647
c8cb1a41f64c
patch 8.2.0380: tiny popup when creating a terminal popup without minwidth
Bram Moolenaar <Bram@vim.org>
parents:
19637
diff
changeset
|
1566 if (minheight > 0 && wp->w_height < minheight) |
c8cb1a41f64c
patch 8.2.0380: tiny popup when creating a terminal popup without minwidth
Bram Moolenaar <Bram@vim.org>
parents:
19637
diff
changeset
|
1567 wp->w_height = minheight; |
21713
b997e872ff95
patch 8.2.1406: popupwindow lacks scrollbar if no "maxheight" is used
Bram Moolenaar <Bram@vim.org>
parents:
21514
diff
changeset
|
1568 if (maxheight > 0 && wp->w_height > maxheight) |
b997e872ff95
patch 8.2.1406: popupwindow lacks scrollbar if no "maxheight" is used
Bram Moolenaar <Bram@vim.org>
parents:
21514
diff
changeset
|
1569 wp->w_height = maxheight; |
18588
7dfdc319f4ff
patch 8.1.2288: not using all space when popup with "topleft" flips to above
Bram Moolenaar <Bram@vim.org>
parents:
18584
diff
changeset
|
1570 w_height_before_limit = wp->w_height; |
16817
069ee8dc8c8d
patch 8.1.1410: popup_move() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16813
diff
changeset
|
1571 if (wp->w_height > Rows - wp->w_winrow) |
069ee8dc8c8d
patch 8.1.1410: popup_move() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16813
diff
changeset
|
1572 wp->w_height = Rows - wp->w_winrow; |
16839
032d5335987e
patch 8.1.1421: drawing "~" line in popup window
Bram Moolenaar <Bram@vim.org>
parents:
16837
diff
changeset
|
1573 |
16855
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
1574 if (center_vert) |
17117
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
1575 { |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
1576 wp->w_winrow = (Rows - wp->w_height - extra_height) / 2; |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
1577 if (wp->w_winrow < 0) |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
1578 wp->w_winrow = 0; |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
1579 } |
16855
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
1580 else if (wp->w_popup_pos == POPPOS_BOTRIGHT |
18542
244b336b94ce
patch 8.1.2265: when popup with "botleft" does not fit it flips incorrectly
Bram Moolenaar <Bram@vim.org>
parents:
18512
diff
changeset
|
1581 || wp->w_popup_pos == POPPOS_BOTLEFT) |
16855
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
1582 { |
17863
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1583 if ((wp->w_height + extra_height) <= wantline) |
16855
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
1584 // bottom aligned: may move down |
17863
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1585 wp->w_winrow = wantline - (wp->w_height + extra_height); |
18542
244b336b94ce
patch 8.1.2265: when popup with "botleft" does not fit it flips incorrectly
Bram Moolenaar <Bram@vim.org>
parents:
18512
diff
changeset
|
1586 else if (wantline * 2 >= Rows || !(wp->w_popup_flags & POPF_POSINVERT)) |
244b336b94ce
patch 8.1.2265: when popup with "botleft" does not fit it flips incorrectly
Bram Moolenaar <Bram@vim.org>
parents:
18512
diff
changeset
|
1587 { |
244b336b94ce
patch 8.1.2265: when popup with "botleft" does not fit it flips incorrectly
Bram Moolenaar <Bram@vim.org>
parents:
18512
diff
changeset
|
1588 // Bottom aligned but does not fit, and less space on the other |
244b336b94ce
patch 8.1.2265: when popup with "botleft" does not fit it flips incorrectly
Bram Moolenaar <Bram@vim.org>
parents:
18512
diff
changeset
|
1589 // side or "posinvert" is off: reduce height. |
244b336b94ce
patch 8.1.2265: when popup with "botleft" does not fit it flips incorrectly
Bram Moolenaar <Bram@vim.org>
parents:
18512
diff
changeset
|
1590 wp->w_winrow = 0; |
244b336b94ce
patch 8.1.2265: when popup with "botleft" does not fit it flips incorrectly
Bram Moolenaar <Bram@vim.org>
parents:
18512
diff
changeset
|
1591 wp->w_height = wantline - extra_height; |
244b336b94ce
patch 8.1.2265: when popup with "botleft" does not fit it flips incorrectly
Bram Moolenaar <Bram@vim.org>
parents:
18512
diff
changeset
|
1592 } |
16855
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
1593 else |
21713
b997e872ff95
patch 8.2.1406: popupwindow lacks scrollbar if no "maxheight" is used
Bram Moolenaar <Bram@vim.org>
parents:
21514
diff
changeset
|
1594 { |
18542
244b336b94ce
patch 8.1.2265: when popup with "botleft" does not fit it flips incorrectly
Bram Moolenaar <Bram@vim.org>
parents:
18512
diff
changeset
|
1595 // Not enough space and more space on the other side: make top |
244b336b94ce
patch 8.1.2265: when popup with "botleft" does not fit it flips incorrectly
Bram Moolenaar <Bram@vim.org>
parents:
18512
diff
changeset
|
1596 // aligned. |
18432
ee8db42dacf6
patch 8.1.2210: using negative offset for popup_create() does not work
Bram Moolenaar <Bram@vim.org>
parents:
18398
diff
changeset
|
1597 wp->w_winrow = (wantline < 0 ? 0 : wantline) + 1; |
21729
f2ba8ebbab2b
patch 8.2.1414: popupwindow missing last couple of lines
Bram Moolenaar <Bram@vim.org>
parents:
21713
diff
changeset
|
1598 adjust_height_for_top_aligned = TRUE; |
21713
b997e872ff95
patch 8.2.1406: popupwindow lacks scrollbar if no "maxheight" is used
Bram Moolenaar <Bram@vim.org>
parents:
21514
diff
changeset
|
1599 } |
16855
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
1600 } |
18542
244b336b94ce
patch 8.1.2265: when popup with "botleft" does not fit it flips incorrectly
Bram Moolenaar <Bram@vim.org>
parents:
18512
diff
changeset
|
1601 else if (wp->w_popup_pos == POPPOS_TOPRIGHT |
244b336b94ce
patch 8.1.2265: when popup with "botleft" does not fit it flips incorrectly
Bram Moolenaar <Bram@vim.org>
parents:
18512
diff
changeset
|
1602 || wp->w_popup_pos == POPPOS_TOPLEFT) |
244b336b94ce
patch 8.1.2265: when popup with "botleft" does not fit it flips incorrectly
Bram Moolenaar <Bram@vim.org>
parents:
18512
diff
changeset
|
1603 { |
28279
8ef5c996df31
patch 8.2.4665: popup with "minwidth" and scrollbar not updated properly
Bram Moolenaar <Bram@vim.org>
parents:
28187
diff
changeset
|
1604 if (wp != popup_dragwin |
8ef5c996df31
patch 8.2.4665: popup with "minwidth" and scrollbar not updated properly
Bram Moolenaar <Bram@vim.org>
parents:
28187
diff
changeset
|
1605 && wantline + (wp->w_height + extra_height) - 1 > Rows |
18542
244b336b94ce
patch 8.1.2265: when popup with "botleft" does not fit it flips incorrectly
Bram Moolenaar <Bram@vim.org>
parents:
18512
diff
changeset
|
1606 && wantline * 2 > Rows |
244b336b94ce
patch 8.1.2265: when popup with "botleft" does not fit it flips incorrectly
Bram Moolenaar <Bram@vim.org>
parents:
18512
diff
changeset
|
1607 && (wp->w_popup_flags & POPF_POSINVERT)) |
18588
7dfdc319f4ff
patch 8.1.2288: not using all space when popup with "topleft" flips to above
Bram Moolenaar <Bram@vim.org>
parents:
18584
diff
changeset
|
1608 { |
18542
244b336b94ce
patch 8.1.2265: when popup with "botleft" does not fit it flips incorrectly
Bram Moolenaar <Bram@vim.org>
parents:
18512
diff
changeset
|
1609 // top aligned and not enough space below but there is space above: |
18588
7dfdc319f4ff
patch 8.1.2288: not using all space when popup with "topleft" flips to above
Bram Moolenaar <Bram@vim.org>
parents:
18584
diff
changeset
|
1610 // make bottom aligned and recompute the height |
7dfdc319f4ff
patch 8.1.2288: not using all space when popup with "topleft" flips to above
Bram Moolenaar <Bram@vim.org>
parents:
18584
diff
changeset
|
1611 wp->w_height = w_height_before_limit; |
18542
244b336b94ce
patch 8.1.2265: when popup with "botleft" does not fit it flips incorrectly
Bram Moolenaar <Bram@vim.org>
parents:
18512
diff
changeset
|
1612 wp->w_winrow = wantline - 2 - wp->w_height - extra_height; |
18588
7dfdc319f4ff
patch 8.1.2288: not using all space when popup with "topleft" flips to above
Bram Moolenaar <Bram@vim.org>
parents:
18584
diff
changeset
|
1613 if (wp->w_winrow < 0) |
7dfdc319f4ff
patch 8.1.2288: not using all space when popup with "topleft" flips to above
Bram Moolenaar <Bram@vim.org>
parents:
18584
diff
changeset
|
1614 { |
7dfdc319f4ff
patch 8.1.2288: not using all space when popup with "topleft" flips to above
Bram Moolenaar <Bram@vim.org>
parents:
18584
diff
changeset
|
1615 wp->w_height += wp->w_winrow; |
7dfdc319f4ff
patch 8.1.2288: not using all space when popup with "topleft" flips to above
Bram Moolenaar <Bram@vim.org>
parents:
18584
diff
changeset
|
1616 wp->w_winrow = 0; |
7dfdc319f4ff
patch 8.1.2288: not using all space when popup with "topleft" flips to above
Bram Moolenaar <Bram@vim.org>
parents:
18584
diff
changeset
|
1617 } |
7dfdc319f4ff
patch 8.1.2288: not using all space when popup with "topleft" flips to above
Bram Moolenaar <Bram@vim.org>
parents:
18584
diff
changeset
|
1618 } |
18542
244b336b94ce
patch 8.1.2265: when popup with "botleft" does not fit it flips incorrectly
Bram Moolenaar <Bram@vim.org>
parents:
18512
diff
changeset
|
1619 else |
21729
f2ba8ebbab2b
patch 8.2.1414: popupwindow missing last couple of lines
Bram Moolenaar <Bram@vim.org>
parents:
21713
diff
changeset
|
1620 { |
18542
244b336b94ce
patch 8.1.2265: when popup with "botleft" does not fit it flips incorrectly
Bram Moolenaar <Bram@vim.org>
parents:
18512
diff
changeset
|
1621 wp->w_winrow = wantline - 1; |
21729
f2ba8ebbab2b
patch 8.2.1414: popupwindow missing last couple of lines
Bram Moolenaar <Bram@vim.org>
parents:
21713
diff
changeset
|
1622 adjust_height_for_top_aligned = TRUE; |
f2ba8ebbab2b
patch 8.2.1414: popupwindow missing last couple of lines
Bram Moolenaar <Bram@vim.org>
parents:
21713
diff
changeset
|
1623 } |
18542
244b336b94ce
patch 8.1.2265: when popup with "botleft" does not fit it flips incorrectly
Bram Moolenaar <Bram@vim.org>
parents:
18512
diff
changeset
|
1624 } |
21729
f2ba8ebbab2b
patch 8.2.1414: popupwindow missing last couple of lines
Bram Moolenaar <Bram@vim.org>
parents:
21713
diff
changeset
|
1625 |
f2ba8ebbab2b
patch 8.2.1414: popupwindow missing last couple of lines
Bram Moolenaar <Bram@vim.org>
parents:
21713
diff
changeset
|
1626 if (adjust_height_for_top_aligned && wp->w_want_scrollbar |
f2ba8ebbab2b
patch 8.2.1414: popupwindow missing last couple of lines
Bram Moolenaar <Bram@vim.org>
parents:
21713
diff
changeset
|
1627 && wp->w_winrow + wp->w_height + extra_height > Rows) |
f2ba8ebbab2b
patch 8.2.1414: popupwindow missing last couple of lines
Bram Moolenaar <Bram@vim.org>
parents:
21713
diff
changeset
|
1628 { |
f2ba8ebbab2b
patch 8.2.1414: popupwindow missing last couple of lines
Bram Moolenaar <Bram@vim.org>
parents:
21713
diff
changeset
|
1629 // Bottom of the popup goes below the last line, reduce the height and |
f2ba8ebbab2b
patch 8.2.1414: popupwindow missing last couple of lines
Bram Moolenaar <Bram@vim.org>
parents:
21713
diff
changeset
|
1630 // add a scrollbar. |
f2ba8ebbab2b
patch 8.2.1414: popupwindow missing last couple of lines
Bram Moolenaar <Bram@vim.org>
parents:
21713
diff
changeset
|
1631 wp->w_height = Rows - wp->w_winrow - extra_height; |
f2ba8ebbab2b
patch 8.2.1414: popupwindow missing last couple of lines
Bram Moolenaar <Bram@vim.org>
parents:
21713
diff
changeset
|
1632 #ifdef FEAT_TERMINAL |
29032
361b46a07f5e
patch 8.2.5038: a finished terminal in a popup window does not show scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
28778
diff
changeset
|
1633 if (wp->w_buffer->b_term == NULL || term_is_finished(wp->w_buffer)) |
21729
f2ba8ebbab2b
patch 8.2.1414: popupwindow missing last couple of lines
Bram Moolenaar <Bram@vim.org>
parents:
21713
diff
changeset
|
1634 #endif |
28279
8ef5c996df31
patch 8.2.4665: popup with "minwidth" and scrollbar not updated properly
Bram Moolenaar <Bram@vim.org>
parents:
28187
diff
changeset
|
1635 { |
21729
f2ba8ebbab2b
patch 8.2.1414: popupwindow missing last couple of lines
Bram Moolenaar <Bram@vim.org>
parents:
21713
diff
changeset
|
1636 wp->w_has_scrollbar = TRUE; |
28279
8ef5c996df31
patch 8.2.4665: popup with "minwidth" and scrollbar not updated properly
Bram Moolenaar <Bram@vim.org>
parents:
28187
diff
changeset
|
1637 if (width_with_scrollbar > 0) |
8ef5c996df31
patch 8.2.4665: popup with "minwidth" and scrollbar not updated properly
Bram Moolenaar <Bram@vim.org>
parents:
28187
diff
changeset
|
1638 wp->w_width = width_with_scrollbar; |
8ef5c996df31
patch 8.2.4665: popup with "minwidth" and scrollbar not updated properly
Bram Moolenaar <Bram@vim.org>
parents:
28187
diff
changeset
|
1639 } |
21729
f2ba8ebbab2b
patch 8.2.1414: popupwindow missing last couple of lines
Bram Moolenaar <Bram@vim.org>
parents:
21713
diff
changeset
|
1640 } |
f2ba8ebbab2b
patch 8.2.1414: popupwindow missing last couple of lines
Bram Moolenaar <Bram@vim.org>
parents:
21713
diff
changeset
|
1641 |
f2ba8ebbab2b
patch 8.2.1414: popupwindow missing last couple of lines
Bram Moolenaar <Bram@vim.org>
parents:
21713
diff
changeset
|
1642 // make sure w_winrow is valid |
17863
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1643 if (wp->w_winrow >= Rows) |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1644 wp->w_winrow = Rows - 1; |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1645 else if (wp->w_winrow < 0) |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1646 wp->w_winrow = 0; |
16855
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
1647 |
21713
b997e872ff95
patch 8.2.1406: popupwindow lacks scrollbar if no "maxheight" is used
Bram Moolenaar <Bram@vim.org>
parents:
21514
diff
changeset
|
1648 if (wp->w_height != org_height) |
b997e872ff95
patch 8.2.1406: popupwindow lacks scrollbar if no "maxheight" is used
Bram Moolenaar <Bram@vim.org>
parents:
21514
diff
changeset
|
1649 win_comp_scroll(wp); |
b997e872ff95
patch 8.2.1406: popupwindow lacks scrollbar if no "maxheight" is used
Bram Moolenaar <Bram@vim.org>
parents:
21514
diff
changeset
|
1650 |
16839
032d5335987e
patch 8.1.1421: drawing "~" line in popup window
Bram Moolenaar <Bram@vim.org>
parents:
16837
diff
changeset
|
1651 wp->w_popup_last_changedtick = CHANGEDTICK(wp->w_buffer); |
17863
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1652 if (win_valid(wp->w_popup_prop_win)) |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1653 { |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1654 wp->w_popup_prop_changedtick = |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1655 CHANGEDTICK(wp->w_popup_prop_win->w_buffer); |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1656 wp->w_popup_prop_topline = wp->w_popup_prop_win->w_topline; |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
1657 } |
16986
03f3a9ca2770
patch 8.1.1493: redrawing with popups is slow and causes flicker
Bram Moolenaar <Bram@vim.org>
parents:
16908
diff
changeset
|
1658 |
03f3a9ca2770
patch 8.1.1493: redrawing with popups is slow and causes flicker
Bram Moolenaar <Bram@vim.org>
parents:
16908
diff
changeset
|
1659 // Need to update popup_mask if the position or size changed. |
17841
9513821d9d8f
patch 8.1.1917: non-current window is not redrawn when moving popup
Bram Moolenaar <Bram@vim.org>
parents:
17823
diff
changeset
|
1660 // And redraw windows and statuslines that were behind the popup. |
16986
03f3a9ca2770
patch 8.1.1493: redrawing with popups is slow and causes flicker
Bram Moolenaar <Bram@vim.org>
parents:
16908
diff
changeset
|
1661 if (org_winrow != wp->w_winrow |
03f3a9ca2770
patch 8.1.1493: redrawing with popups is slow and causes flicker
Bram Moolenaar <Bram@vim.org>
parents:
16908
diff
changeset
|
1662 || org_wincol != wp->w_wincol |
17206
8ca93f88b84a
patch 8.1.1602: popup window cannot overflow on the left or right
Bram Moolenaar <Bram@vim.org>
parents:
17202
diff
changeset
|
1663 || org_leftcol != wp->w_leftcol |
17235
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
1664 || org_leftoff != wp->w_popup_leftoff |
16986
03f3a9ca2770
patch 8.1.1493: redrawing with popups is slow and causes flicker
Bram Moolenaar <Bram@vim.org>
parents:
16908
diff
changeset
|
1665 || org_width != wp->w_width |
03f3a9ca2770
patch 8.1.1493: redrawing with popups is slow and causes flicker
Bram Moolenaar <Bram@vim.org>
parents:
16908
diff
changeset
|
1666 || org_height != wp->w_height) |
03f3a9ca2770
patch 8.1.1493: redrawing with popups is slow and causes flicker
Bram Moolenaar <Bram@vim.org>
parents:
16908
diff
changeset
|
1667 { |
29732
89e1d67814a9
patch 9.0.0206: redraw flags are not named specifically
Bram Moolenaar <Bram@vim.org>
parents:
29660
diff
changeset
|
1668 redraw_win_later(wp, UPD_NOT_VALID); |
17551
8cca2654d459
patch 8.1.1773: the preview popup window may be too far to the right
Bram Moolenaar <Bram@vim.org>
parents:
17545
diff
changeset
|
1669 if (wp->w_popup_flags & POPF_ON_CMDLINE) |
8cca2654d459
patch 8.1.1773: the preview popup window may be too far to the right
Bram Moolenaar <Bram@vim.org>
parents:
17545
diff
changeset
|
1670 clear_cmdline = TRUE; |
16986
03f3a9ca2770
patch 8.1.1493: redrawing with popups is slow and causes flicker
Bram Moolenaar <Bram@vim.org>
parents:
16908
diff
changeset
|
1671 popup_mask_refresh = TRUE; |
03f3a9ca2770
patch 8.1.1493: redrawing with popups is slow and causes flicker
Bram Moolenaar <Bram@vim.org>
parents:
16908
diff
changeset
|
1672 } |
16817
069ee8dc8c8d
patch 8.1.1410: popup_move() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16813
diff
changeset
|
1673 } |
069ee8dc8c8d
patch 8.1.1410: popup_move() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16813
diff
changeset
|
1674 |
16908
df06694b761b
patch 8.1.1455: popup_atcursor() not completely implemented
Bram Moolenaar <Bram@vim.org>
parents:
16904
diff
changeset
|
1675 typedef enum |
df06694b761b
patch 8.1.1455: popup_atcursor() not completely implemented
Bram Moolenaar <Bram@vim.org>
parents:
16904
diff
changeset
|
1676 { |
df06694b761b
patch 8.1.1455: popup_atcursor() not completely implemented
Bram Moolenaar <Bram@vim.org>
parents:
16904
diff
changeset
|
1677 TYPE_NORMAL, |
17045
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
1678 TYPE_ATCURSOR, |
17292
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
1679 TYPE_BEVAL, |
17097
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
1680 TYPE_NOTIFICATION, |
29900
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
1681 TYPE_MESSAGE_WIN, // similar to TYPE_NOTIFICATION |
17117
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
1682 TYPE_DIALOG, |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1683 TYPE_MENU, |
17767
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
1684 TYPE_PREVIEW, // preview window |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
1685 TYPE_INFO // popup menu info |
16908
df06694b761b
patch 8.1.1455: popup_atcursor() not completely implemented
Bram Moolenaar <Bram@vim.org>
parents:
16904
diff
changeset
|
1686 } create_type_T; |
df06694b761b
patch 8.1.1455: popup_atcursor() not completely implemented
Bram Moolenaar <Bram@vim.org>
parents:
16904
diff
changeset
|
1687 |
16817
069ee8dc8c8d
patch 8.1.1410: popup_move() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16813
diff
changeset
|
1688 /* |
29900
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
1689 * Return TRUE if "type" is TYPE_NOTIFICATION or TYPE_MESSAGE_WIN. |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
1690 */ |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
1691 static int |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
1692 popup_is_notification(create_type_T type) |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
1693 { |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
1694 return type == TYPE_NOTIFICATION || type == TYPE_MESSAGE_WIN; |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
1695 } |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
1696 |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
1697 /* |
17107
0001d10a7661
patch 8.1.1553: not easy to change the text in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17101
diff
changeset
|
1698 * Make "buf" empty and set the contents to "text". |
0001d10a7661
patch 8.1.1553: not easy to change the text in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17101
diff
changeset
|
1699 * Used by popup_create() and popup_settext(). |
0001d10a7661
patch 8.1.1553: not easy to change the text in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17101
diff
changeset
|
1700 */ |
0001d10a7661
patch 8.1.1553: not easy to change the text in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17101
diff
changeset
|
1701 static void |
0001d10a7661
patch 8.1.1553: not easy to change the text in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17101
diff
changeset
|
1702 popup_set_buffer_text(buf_T *buf, typval_T text) |
0001d10a7661
patch 8.1.1553: not easy to change the text in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17101
diff
changeset
|
1703 { |
0001d10a7661
patch 8.1.1553: not easy to change the text in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17101
diff
changeset
|
1704 int lnum; |
0001d10a7661
patch 8.1.1553: not easy to change the text in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17101
diff
changeset
|
1705 |
0001d10a7661
patch 8.1.1553: not easy to change the text in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17101
diff
changeset
|
1706 // Clear the buffer, then replace the lines. |
0001d10a7661
patch 8.1.1553: not easy to change the text in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17101
diff
changeset
|
1707 curbuf = buf; |
0001d10a7661
patch 8.1.1553: not easy to change the text in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17101
diff
changeset
|
1708 for (lnum = buf->b_ml.ml_line_count; lnum > 0; --lnum) |
20599
d571231175b4
patch 8.2.0853: ml_delete() often called with FALSE argument
Bram Moolenaar <Bram@vim.org>
parents:
20476
diff
changeset
|
1709 ml_delete(lnum); |
17107
0001d10a7661
patch 8.1.1553: not easy to change the text in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17101
diff
changeset
|
1710 curbuf = curwin->w_buffer; |
0001d10a7661
patch 8.1.1553: not easy to change the text in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17101
diff
changeset
|
1711 |
0001d10a7661
patch 8.1.1553: not easy to change the text in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17101
diff
changeset
|
1712 // Add text to the buffer. |
0001d10a7661
patch 8.1.1553: not easy to change the text in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17101
diff
changeset
|
1713 if (text.v_type == VAR_STRING) |
0001d10a7661
patch 8.1.1553: not easy to change the text in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17101
diff
changeset
|
1714 { |
22600
d5ce7dd60dc1
patch 8.2.1848: crash when passing a NULL string or list to popup_settext()
Bram Moolenaar <Bram@vim.org>
parents:
22429
diff
changeset
|
1715 char_u *s = text.vval.v_string; |
d5ce7dd60dc1
patch 8.2.1848: crash when passing a NULL string or list to popup_settext()
Bram Moolenaar <Bram@vim.org>
parents:
22429
diff
changeset
|
1716 |
17107
0001d10a7661
patch 8.1.1553: not easy to change the text in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17101
diff
changeset
|
1717 // just a string |
22600
d5ce7dd60dc1
patch 8.2.1848: crash when passing a NULL string or list to popup_settext()
Bram Moolenaar <Bram@vim.org>
parents:
22429
diff
changeset
|
1718 ml_append_buf(buf, 0, s == NULL ? (char_u *)"" : s, (colnr_T)0, TRUE); |
17107
0001d10a7661
patch 8.1.1553: not easy to change the text in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17101
diff
changeset
|
1719 } |
0001d10a7661
patch 8.1.1553: not easy to change the text in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17101
diff
changeset
|
1720 else |
0001d10a7661
patch 8.1.1553: not easy to change the text in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17101
diff
changeset
|
1721 { |
0001d10a7661
patch 8.1.1553: not easy to change the text in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17101
diff
changeset
|
1722 list_T *l = text.vval.v_list; |
0001d10a7661
patch 8.1.1553: not easy to change the text in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17101
diff
changeset
|
1723 |
22600
d5ce7dd60dc1
patch 8.2.1848: crash when passing a NULL string or list to popup_settext()
Bram Moolenaar <Bram@vim.org>
parents:
22429
diff
changeset
|
1724 if (l != NULL && l->lv_len > 0) |
17107
0001d10a7661
patch 8.1.1553: not easy to change the text in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17101
diff
changeset
|
1725 { |
29034
f3c014fe5c16
patch 8.2.5039: confusing error if first argument of popup_create() is wrong
Bram Moolenaar <Bram@vim.org>
parents:
29032
diff
changeset
|
1726 if (l->lv_first == &range_list_item) |
f3c014fe5c16
patch 8.2.5039: confusing error if first argument of popup_create() is wrong
Bram Moolenaar <Bram@vim.org>
parents:
29032
diff
changeset
|
1727 emsg(_(e_using_number_as_string)); |
f3c014fe5c16
patch 8.2.5039: confusing error if first argument of popup_create() is wrong
Bram Moolenaar <Bram@vim.org>
parents:
29032
diff
changeset
|
1728 else if (l->lv_first->li_tv.v_type == VAR_STRING) |
17107
0001d10a7661
patch 8.1.1553: not easy to change the text in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17101
diff
changeset
|
1729 // list of strings |
0001d10a7661
patch 8.1.1553: not easy to change the text in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17101
diff
changeset
|
1730 add_popup_strings(buf, l); |
0001d10a7661
patch 8.1.1553: not easy to change the text in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17101
diff
changeset
|
1731 else |
0001d10a7661
patch 8.1.1553: not easy to change the text in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17101
diff
changeset
|
1732 // list of dictionaries |
0001d10a7661
patch 8.1.1553: not easy to change the text in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17101
diff
changeset
|
1733 add_popup_dicts(buf, l); |
0001d10a7661
patch 8.1.1553: not easy to change the text in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17101
diff
changeset
|
1734 } |
0001d10a7661
patch 8.1.1553: not easy to change the text in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17101
diff
changeset
|
1735 } |
0001d10a7661
patch 8.1.1553: not easy to change the text in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17101
diff
changeset
|
1736 |
0001d10a7661
patch 8.1.1553: not easy to change the text in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17101
diff
changeset
|
1737 // delete the line that was in the empty buffer |
0001d10a7661
patch 8.1.1553: not easy to change the text in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17101
diff
changeset
|
1738 curbuf = buf; |
20599
d571231175b4
patch 8.2.0853: ml_delete() often called with FALSE argument
Bram Moolenaar <Bram@vim.org>
parents:
20476
diff
changeset
|
1739 ml_delete(buf->b_ml.ml_line_count); |
17107
0001d10a7661
patch 8.1.1553: not easy to change the text in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17101
diff
changeset
|
1740 curbuf = curwin->w_buffer; |
0001d10a7661
patch 8.1.1553: not easy to change the text in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17101
diff
changeset
|
1741 } |
0001d10a7661
patch 8.1.1553: not easy to change the text in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17101
diff
changeset
|
1742 |
0001d10a7661
patch 8.1.1553: not easy to change the text in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17101
diff
changeset
|
1743 /* |
17771
4bd21046902b
patch 8.1.1882: cannot specify properties of the info popup window
Bram Moolenaar <Bram@vim.org>
parents:
17767
diff
changeset
|
1744 * Parse the 'previewpopup' or 'completepopup' option and apply the values to |
4bd21046902b
patch 8.1.1882: cannot specify properties of the info popup window
Bram Moolenaar <Bram@vim.org>
parents:
17767
diff
changeset
|
1745 * window "wp" if it is not NULL. |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1746 * Return FAIL if the parsing fails. |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1747 */ |
17771
4bd21046902b
patch 8.1.1882: cannot specify properties of the info popup window
Bram Moolenaar <Bram@vim.org>
parents:
17767
diff
changeset
|
1748 static int |
4bd21046902b
patch 8.1.1882: cannot specify properties of the info popup window
Bram Moolenaar <Bram@vim.org>
parents:
17767
diff
changeset
|
1749 parse_popup_option(win_T *wp, int is_preview) |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1750 { |
17791
55c167b08c2b
patch 8.1.1892: missing index entry and option menu for 'completepopup'
Bram Moolenaar <Bram@vim.org>
parents:
17789
diff
changeset
|
1751 char_u *p = |
55c167b08c2b
patch 8.1.1892: missing index entry and option menu for 'completepopup'
Bram Moolenaar <Bram@vim.org>
parents:
17789
diff
changeset
|
1752 #ifdef FEAT_QUICKFIX |
55c167b08c2b
patch 8.1.1892: missing index entry and option menu for 'completepopup'
Bram Moolenaar <Bram@vim.org>
parents:
17789
diff
changeset
|
1753 !is_preview ? p_cpp : |
55c167b08c2b
patch 8.1.1892: missing index entry and option menu for 'completepopup'
Bram Moolenaar <Bram@vim.org>
parents:
17789
diff
changeset
|
1754 #endif |
55c167b08c2b
patch 8.1.1892: missing index entry and option menu for 'completepopup'
Bram Moolenaar <Bram@vim.org>
parents:
17789
diff
changeset
|
1755 p_pvp; |
55c167b08c2b
patch 8.1.1892: missing index entry and option menu for 'completepopup'
Bram Moolenaar <Bram@vim.org>
parents:
17789
diff
changeset
|
1756 |
17815
9ec2526c04c5
patch 8.1.1904: cannot have an info popup align with the popup menu
Bram Moolenaar <Bram@vim.org>
parents:
17811
diff
changeset
|
1757 if (wp != NULL) |
9ec2526c04c5
patch 8.1.1904: cannot have an info popup align with the popup menu
Bram Moolenaar <Bram@vim.org>
parents:
17811
diff
changeset
|
1758 wp->w_popup_flags &= ~POPF_INFO_MENU; |
9ec2526c04c5
patch 8.1.1904: cannot have an info popup align with the popup menu
Bram Moolenaar <Bram@vim.org>
parents:
17811
diff
changeset
|
1759 |
17791
55c167b08c2b
patch 8.1.1892: missing index entry and option menu for 'completepopup'
Bram Moolenaar <Bram@vim.org>
parents:
17789
diff
changeset
|
1760 for ( ; *p != NUL; p += (*p == ',' ? 1 : 0)) |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1761 { |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1762 char_u *e, *dig; |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1763 char_u *s = p; |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1764 int x; |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1765 |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1766 e = vim_strchr(p, ':'); |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1767 if (e == NULL || e[1] == NUL) |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1768 return FAIL; |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1769 |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1770 p = vim_strchr(e, ','); |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1771 if (p == NULL) |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1772 p = e + STRLEN(e); |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1773 dig = e + 1; |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1774 x = getdigits(&dig); |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1775 |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1776 if (STRNCMP(s, "height:", 7) == 0) |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1777 { |
17771
4bd21046902b
patch 8.1.1882: cannot specify properties of the info popup window
Bram Moolenaar <Bram@vim.org>
parents:
17767
diff
changeset
|
1778 if (dig != p) |
4bd21046902b
patch 8.1.1882: cannot specify properties of the info popup window
Bram Moolenaar <Bram@vim.org>
parents:
17767
diff
changeset
|
1779 return FAIL; |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1780 if (wp != NULL) |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1781 { |
17771
4bd21046902b
patch 8.1.1882: cannot specify properties of the info popup window
Bram Moolenaar <Bram@vim.org>
parents:
17767
diff
changeset
|
1782 if (is_preview) |
4bd21046902b
patch 8.1.1882: cannot specify properties of the info popup window
Bram Moolenaar <Bram@vim.org>
parents:
17767
diff
changeset
|
1783 wp->w_minheight = x; |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1784 wp->w_maxheight = x; |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1785 } |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1786 } |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1787 else if (STRNCMP(s, "width:", 6) == 0) |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1788 { |
17771
4bd21046902b
patch 8.1.1882: cannot specify properties of the info popup window
Bram Moolenaar <Bram@vim.org>
parents:
17767
diff
changeset
|
1789 if (dig != p) |
4bd21046902b
patch 8.1.1882: cannot specify properties of the info popup window
Bram Moolenaar <Bram@vim.org>
parents:
17767
diff
changeset
|
1790 return FAIL; |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1791 if (wp != NULL) |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1792 { |
17771
4bd21046902b
patch 8.1.1882: cannot specify properties of the info popup window
Bram Moolenaar <Bram@vim.org>
parents:
17767
diff
changeset
|
1793 if (is_preview) |
4bd21046902b
patch 8.1.1882: cannot specify properties of the info popup window
Bram Moolenaar <Bram@vim.org>
parents:
17767
diff
changeset
|
1794 wp->w_minwidth = x; |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1795 wp->w_maxwidth = x; |
21377
47f25a0c5a42
patch 8.2.1239: "maxwidth" in 'completepopup' not obeyed
Bram Moolenaar <Bram@vim.org>
parents:
21373
diff
changeset
|
1796 wp->w_maxwidth_opt = x; |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1797 } |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1798 } |
17771
4bd21046902b
patch 8.1.1882: cannot specify properties of the info popup window
Bram Moolenaar <Bram@vim.org>
parents:
17767
diff
changeset
|
1799 else if (STRNCMP(s, "highlight:", 10) == 0) |
4bd21046902b
patch 8.1.1882: cannot specify properties of the info popup window
Bram Moolenaar <Bram@vim.org>
parents:
17767
diff
changeset
|
1800 { |
4bd21046902b
patch 8.1.1882: cannot specify properties of the info popup window
Bram Moolenaar <Bram@vim.org>
parents:
17767
diff
changeset
|
1801 if (wp != NULL) |
4bd21046902b
patch 8.1.1882: cannot specify properties of the info popup window
Bram Moolenaar <Bram@vim.org>
parents:
17767
diff
changeset
|
1802 { |
4bd21046902b
patch 8.1.1882: cannot specify properties of the info popup window
Bram Moolenaar <Bram@vim.org>
parents:
17767
diff
changeset
|
1803 int c = *p; |
4bd21046902b
patch 8.1.1882: cannot specify properties of the info popup window
Bram Moolenaar <Bram@vim.org>
parents:
17767
diff
changeset
|
1804 |
4bd21046902b
patch 8.1.1882: cannot specify properties of the info popup window
Bram Moolenaar <Bram@vim.org>
parents:
17767
diff
changeset
|
1805 *p = NUL; |
4bd21046902b
patch 8.1.1882: cannot specify properties of the info popup window
Bram Moolenaar <Bram@vim.org>
parents:
17767
diff
changeset
|
1806 set_string_option_direct_in_win(wp, (char_u *)"wincolor", -1, |
4bd21046902b
patch 8.1.1882: cannot specify properties of the info popup window
Bram Moolenaar <Bram@vim.org>
parents:
17767
diff
changeset
|
1807 s + 10, OPT_FREE|OPT_LOCAL, 0); |
4bd21046902b
patch 8.1.1882: cannot specify properties of the info popup window
Bram Moolenaar <Bram@vim.org>
parents:
17767
diff
changeset
|
1808 *p = c; |
4bd21046902b
patch 8.1.1882: cannot specify properties of the info popup window
Bram Moolenaar <Bram@vim.org>
parents:
17767
diff
changeset
|
1809 } |
4bd21046902b
patch 8.1.1882: cannot specify properties of the info popup window
Bram Moolenaar <Bram@vim.org>
parents:
17767
diff
changeset
|
1810 } |
17811
b5499bf22a97
patch 8.1.1902: cannot have an info popup without a border
Bram Moolenaar <Bram@vim.org>
parents:
17791
diff
changeset
|
1811 else if (STRNCMP(s, "border:", 7) == 0) |
b5499bf22a97
patch 8.1.1902: cannot have an info popup without a border
Bram Moolenaar <Bram@vim.org>
parents:
17791
diff
changeset
|
1812 { |
b5499bf22a97
patch 8.1.1902: cannot have an info popup without a border
Bram Moolenaar <Bram@vim.org>
parents:
17791
diff
changeset
|
1813 char_u *arg = s + 7; |
b5499bf22a97
patch 8.1.1902: cannot have an info popup without a border
Bram Moolenaar <Bram@vim.org>
parents:
17791
diff
changeset
|
1814 int on = STRNCMP(arg, "on", 2) == 0 && arg + 2 == p; |
b5499bf22a97
patch 8.1.1902: cannot have an info popup without a border
Bram Moolenaar <Bram@vim.org>
parents:
17791
diff
changeset
|
1815 int off = STRNCMP(arg, "off", 3) == 0 && arg + 3 == p; |
b5499bf22a97
patch 8.1.1902: cannot have an info popup without a border
Bram Moolenaar <Bram@vim.org>
parents:
17791
diff
changeset
|
1816 int i; |
b5499bf22a97
patch 8.1.1902: cannot have an info popup without a border
Bram Moolenaar <Bram@vim.org>
parents:
17791
diff
changeset
|
1817 |
b5499bf22a97
patch 8.1.1902: cannot have an info popup without a border
Bram Moolenaar <Bram@vim.org>
parents:
17791
diff
changeset
|
1818 if (!on && !off) |
b5499bf22a97
patch 8.1.1902: cannot have an info popup without a border
Bram Moolenaar <Bram@vim.org>
parents:
17791
diff
changeset
|
1819 return FAIL; |
b5499bf22a97
patch 8.1.1902: cannot have an info popup without a border
Bram Moolenaar <Bram@vim.org>
parents:
17791
diff
changeset
|
1820 if (wp != NULL) |
b5499bf22a97
patch 8.1.1902: cannot have an info popup without a border
Bram Moolenaar <Bram@vim.org>
parents:
17791
diff
changeset
|
1821 { |
b5499bf22a97
patch 8.1.1902: cannot have an info popup without a border
Bram Moolenaar <Bram@vim.org>
parents:
17791
diff
changeset
|
1822 for (i = 0; i < 4; ++i) |
b5499bf22a97
patch 8.1.1902: cannot have an info popup without a border
Bram Moolenaar <Bram@vim.org>
parents:
17791
diff
changeset
|
1823 wp->w_popup_border[i] = on ? 1 : 0; |
b5499bf22a97
patch 8.1.1902: cannot have an info popup without a border
Bram Moolenaar <Bram@vim.org>
parents:
17791
diff
changeset
|
1824 if (off) |
b5499bf22a97
patch 8.1.1902: cannot have an info popup without a border
Bram Moolenaar <Bram@vim.org>
parents:
17791
diff
changeset
|
1825 // only show the X for close when there is a border |
b5499bf22a97
patch 8.1.1902: cannot have an info popup without a border
Bram Moolenaar <Bram@vim.org>
parents:
17791
diff
changeset
|
1826 wp->w_popup_close = POPCLOSE_NONE; |
b5499bf22a97
patch 8.1.1902: cannot have an info popup without a border
Bram Moolenaar <Bram@vim.org>
parents:
17791
diff
changeset
|
1827 } |
b5499bf22a97
patch 8.1.1902: cannot have an info popup without a border
Bram Moolenaar <Bram@vim.org>
parents:
17791
diff
changeset
|
1828 } |
17815
9ec2526c04c5
patch 8.1.1904: cannot have an info popup align with the popup menu
Bram Moolenaar <Bram@vim.org>
parents:
17811
diff
changeset
|
1829 else if (STRNCMP(s, "align:", 6) == 0) |
9ec2526c04c5
patch 8.1.1904: cannot have an info popup align with the popup menu
Bram Moolenaar <Bram@vim.org>
parents:
17811
diff
changeset
|
1830 { |
9ec2526c04c5
patch 8.1.1904: cannot have an info popup align with the popup menu
Bram Moolenaar <Bram@vim.org>
parents:
17811
diff
changeset
|
1831 char_u *arg = s + 6; |
9ec2526c04c5
patch 8.1.1904: cannot have an info popup align with the popup menu
Bram Moolenaar <Bram@vim.org>
parents:
17811
diff
changeset
|
1832 int item = STRNCMP(arg, "item", 4) == 0 && arg + 4 == p; |
9ec2526c04c5
patch 8.1.1904: cannot have an info popup align with the popup menu
Bram Moolenaar <Bram@vim.org>
parents:
17811
diff
changeset
|
1833 int menu = STRNCMP(arg, "menu", 4) == 0 && arg + 4 == p; |
9ec2526c04c5
patch 8.1.1904: cannot have an info popup align with the popup menu
Bram Moolenaar <Bram@vim.org>
parents:
17811
diff
changeset
|
1834 |
9ec2526c04c5
patch 8.1.1904: cannot have an info popup align with the popup menu
Bram Moolenaar <Bram@vim.org>
parents:
17811
diff
changeset
|
1835 if (!menu && !item) |
9ec2526c04c5
patch 8.1.1904: cannot have an info popup align with the popup menu
Bram Moolenaar <Bram@vim.org>
parents:
17811
diff
changeset
|
1836 return FAIL; |
9ec2526c04c5
patch 8.1.1904: cannot have an info popup align with the popup menu
Bram Moolenaar <Bram@vim.org>
parents:
17811
diff
changeset
|
1837 if (wp != NULL && menu) |
9ec2526c04c5
patch 8.1.1904: cannot have an info popup align with the popup menu
Bram Moolenaar <Bram@vim.org>
parents:
17811
diff
changeset
|
1838 wp->w_popup_flags |= POPF_INFO_MENU; |
9ec2526c04c5
patch 8.1.1904: cannot have an info popup align with the popup menu
Bram Moolenaar <Bram@vim.org>
parents:
17811
diff
changeset
|
1839 } |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1840 else |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1841 return FAIL; |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1842 } |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1843 return OK; |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1844 } |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1845 |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1846 /* |
17771
4bd21046902b
patch 8.1.1882: cannot specify properties of the info popup window
Bram Moolenaar <Bram@vim.org>
parents:
17767
diff
changeset
|
1847 * Parse the 'previewpopup' option and apply the values to window "wp" if it |
4bd21046902b
patch 8.1.1882: cannot specify properties of the info popup window
Bram Moolenaar <Bram@vim.org>
parents:
17767
diff
changeset
|
1848 * is not NULL. |
4bd21046902b
patch 8.1.1882: cannot specify properties of the info popup window
Bram Moolenaar <Bram@vim.org>
parents:
17767
diff
changeset
|
1849 * Return FAIL if the parsing fails. |
4bd21046902b
patch 8.1.1882: cannot specify properties of the info popup window
Bram Moolenaar <Bram@vim.org>
parents:
17767
diff
changeset
|
1850 */ |
4bd21046902b
patch 8.1.1882: cannot specify properties of the info popup window
Bram Moolenaar <Bram@vim.org>
parents:
17767
diff
changeset
|
1851 int |
4bd21046902b
patch 8.1.1882: cannot specify properties of the info popup window
Bram Moolenaar <Bram@vim.org>
parents:
17767
diff
changeset
|
1852 parse_previewpopup(win_T *wp) |
4bd21046902b
patch 8.1.1882: cannot specify properties of the info popup window
Bram Moolenaar <Bram@vim.org>
parents:
17767
diff
changeset
|
1853 { |
4bd21046902b
patch 8.1.1882: cannot specify properties of the info popup window
Bram Moolenaar <Bram@vim.org>
parents:
17767
diff
changeset
|
1854 return parse_popup_option(wp, TRUE); |
4bd21046902b
patch 8.1.1882: cannot specify properties of the info popup window
Bram Moolenaar <Bram@vim.org>
parents:
17767
diff
changeset
|
1855 } |
4bd21046902b
patch 8.1.1882: cannot specify properties of the info popup window
Bram Moolenaar <Bram@vim.org>
parents:
17767
diff
changeset
|
1856 |
4bd21046902b
patch 8.1.1882: cannot specify properties of the info popup window
Bram Moolenaar <Bram@vim.org>
parents:
17767
diff
changeset
|
1857 /* |
4bd21046902b
patch 8.1.1882: cannot specify properties of the info popup window
Bram Moolenaar <Bram@vim.org>
parents:
17767
diff
changeset
|
1858 * Parse the 'completepopup' option and apply the values to window "wp" if it |
4bd21046902b
patch 8.1.1882: cannot specify properties of the info popup window
Bram Moolenaar <Bram@vim.org>
parents:
17767
diff
changeset
|
1859 * is not NULL. |
4bd21046902b
patch 8.1.1882: cannot specify properties of the info popup window
Bram Moolenaar <Bram@vim.org>
parents:
17767
diff
changeset
|
1860 * Return FAIL if the parsing fails. |
4bd21046902b
patch 8.1.1882: cannot specify properties of the info popup window
Bram Moolenaar <Bram@vim.org>
parents:
17767
diff
changeset
|
1861 */ |
4bd21046902b
patch 8.1.1882: cannot specify properties of the info popup window
Bram Moolenaar <Bram@vim.org>
parents:
17767
diff
changeset
|
1862 int |
4bd21046902b
patch 8.1.1882: cannot specify properties of the info popup window
Bram Moolenaar <Bram@vim.org>
parents:
17767
diff
changeset
|
1863 parse_completepopup(win_T *wp) |
4bd21046902b
patch 8.1.1882: cannot specify properties of the info popup window
Bram Moolenaar <Bram@vim.org>
parents:
17767
diff
changeset
|
1864 { |
4bd21046902b
patch 8.1.1882: cannot specify properties of the info popup window
Bram Moolenaar <Bram@vim.org>
parents:
17767
diff
changeset
|
1865 return parse_popup_option(wp, FALSE); |
4bd21046902b
patch 8.1.1882: cannot specify properties of the info popup window
Bram Moolenaar <Bram@vim.org>
parents:
17767
diff
changeset
|
1866 } |
4bd21046902b
patch 8.1.1882: cannot specify properties of the info popup window
Bram Moolenaar <Bram@vim.org>
parents:
17767
diff
changeset
|
1867 |
4bd21046902b
patch 8.1.1882: cannot specify properties of the info popup window
Bram Moolenaar <Bram@vim.org>
parents:
17767
diff
changeset
|
1868 /* |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1869 * Set w_wantline and w_wantcol for the cursor position in the current window. |
17551
8cca2654d459
patch 8.1.1773: the preview popup window may be too far to the right
Bram Moolenaar <Bram@vim.org>
parents:
17545
diff
changeset
|
1870 * Keep at least "width" columns from the right of the screen. |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1871 */ |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1872 void |
18558
e5ef5d820b5b
patch 8.1.2273: wrong default when "pos" is changed with popup_atcursor()
Bram Moolenaar <Bram@vim.org>
parents:
18544
diff
changeset
|
1873 popup_set_wantpos_cursor(win_T *wp, int width, dict_T *d) |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1874 { |
18558
e5ef5d820b5b
patch 8.1.2273: wrong default when "pos" is changed with popup_atcursor()
Bram Moolenaar <Bram@vim.org>
parents:
18544
diff
changeset
|
1875 poppos_T ppt = POPPOS_NONE; |
e5ef5d820b5b
patch 8.1.2273: wrong default when "pos" is changed with popup_atcursor()
Bram Moolenaar <Bram@vim.org>
parents:
18544
diff
changeset
|
1876 |
e5ef5d820b5b
patch 8.1.2273: wrong default when "pos" is changed with popup_atcursor()
Bram Moolenaar <Bram@vim.org>
parents:
18544
diff
changeset
|
1877 if (d != NULL) |
e5ef5d820b5b
patch 8.1.2273: wrong default when "pos" is changed with popup_atcursor()
Bram Moolenaar <Bram@vim.org>
parents:
18544
diff
changeset
|
1878 ppt = get_pos_entry(d, FALSE); |
e5ef5d820b5b
patch 8.1.2273: wrong default when "pos" is changed with popup_atcursor()
Bram Moolenaar <Bram@vim.org>
parents:
18544
diff
changeset
|
1879 |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1880 setcursor_mayforce(TRUE); |
18558
e5ef5d820b5b
patch 8.1.2273: wrong default when "pos" is changed with popup_atcursor()
Bram Moolenaar <Bram@vim.org>
parents:
18544
diff
changeset
|
1881 if (ppt == POPPOS_TOPRIGHT || ppt == POPPOS_TOPLEFT) |
e5ef5d820b5b
patch 8.1.2273: wrong default when "pos" is changed with popup_atcursor()
Bram Moolenaar <Bram@vim.org>
parents:
18544
diff
changeset
|
1882 { |
e5ef5d820b5b
patch 8.1.2273: wrong default when "pos" is changed with popup_atcursor()
Bram Moolenaar <Bram@vim.org>
parents:
18544
diff
changeset
|
1883 wp->w_wantline = curwin->w_winrow + curwin->w_wrow + 2; |
e5ef5d820b5b
patch 8.1.2273: wrong default when "pos" is changed with popup_atcursor()
Bram Moolenaar <Bram@vim.org>
parents:
18544
diff
changeset
|
1884 } |
e5ef5d820b5b
patch 8.1.2273: wrong default when "pos" is changed with popup_atcursor()
Bram Moolenaar <Bram@vim.org>
parents:
18544
diff
changeset
|
1885 else |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1886 { |
18558
e5ef5d820b5b
patch 8.1.2273: wrong default when "pos" is changed with popup_atcursor()
Bram Moolenaar <Bram@vim.org>
parents:
18544
diff
changeset
|
1887 wp->w_wantline = curwin->w_winrow + curwin->w_wrow; |
e5ef5d820b5b
patch 8.1.2273: wrong default when "pos" is changed with popup_atcursor()
Bram Moolenaar <Bram@vim.org>
parents:
18544
diff
changeset
|
1888 if (wp->w_wantline == 0) // cursor in first line |
e5ef5d820b5b
patch 8.1.2273: wrong default when "pos" is changed with popup_atcursor()
Bram Moolenaar <Bram@vim.org>
parents:
18544
diff
changeset
|
1889 { |
e5ef5d820b5b
patch 8.1.2273: wrong default when "pos" is changed with popup_atcursor()
Bram Moolenaar <Bram@vim.org>
parents:
18544
diff
changeset
|
1890 wp->w_wantline = 2; |
e5ef5d820b5b
patch 8.1.2273: wrong default when "pos" is changed with popup_atcursor()
Bram Moolenaar <Bram@vim.org>
parents:
18544
diff
changeset
|
1891 wp->w_popup_pos = ppt == POPPOS_BOTRIGHT |
e5ef5d820b5b
patch 8.1.2273: wrong default when "pos" is changed with popup_atcursor()
Bram Moolenaar <Bram@vim.org>
parents:
18544
diff
changeset
|
1892 ? POPPOS_TOPRIGHT : POPPOS_TOPLEFT; |
e5ef5d820b5b
patch 8.1.2273: wrong default when "pos" is changed with popup_atcursor()
Bram Moolenaar <Bram@vim.org>
parents:
18544
diff
changeset
|
1893 } |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1894 } |
17551
8cca2654d459
patch 8.1.1773: the preview popup window may be too far to the right
Bram Moolenaar <Bram@vim.org>
parents:
17545
diff
changeset
|
1895 |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1896 wp->w_wantcol = curwin->w_wincol + curwin->w_wcol + 1; |
17551
8cca2654d459
patch 8.1.1773: the preview popup window may be too far to the right
Bram Moolenaar <Bram@vim.org>
parents:
17545
diff
changeset
|
1897 if (wp->w_wantcol > Columns - width) |
8cca2654d459
patch 8.1.1773: the preview popup window may be too far to the right
Bram Moolenaar <Bram@vim.org>
parents:
17545
diff
changeset
|
1898 { |
8cca2654d459
patch 8.1.1773: the preview popup window may be too far to the right
Bram Moolenaar <Bram@vim.org>
parents:
17545
diff
changeset
|
1899 wp->w_wantcol = Columns - width; |
8cca2654d459
patch 8.1.1773: the preview popup window may be too far to the right
Bram Moolenaar <Bram@vim.org>
parents:
17545
diff
changeset
|
1900 if (wp->w_wantcol < 1) |
8cca2654d459
patch 8.1.1773: the preview popup window may be too far to the right
Bram Moolenaar <Bram@vim.org>
parents:
17545
diff
changeset
|
1901 wp->w_wantcol = 1; |
8cca2654d459
patch 8.1.1773: the preview popup window may be too far to the right
Bram Moolenaar <Bram@vim.org>
parents:
17545
diff
changeset
|
1902 } |
18558
e5ef5d820b5b
patch 8.1.2273: wrong default when "pos" is changed with popup_atcursor()
Bram Moolenaar <Bram@vim.org>
parents:
18544
diff
changeset
|
1903 |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1904 popup_adjust_position(wp); |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1905 } |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1906 |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1907 /* |
17767
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
1908 * Set w_wantline and w_wantcol for the a given screen position. |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
1909 * Caller must take care of running into the window border. |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
1910 */ |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
1911 void |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
1912 popup_set_wantpos_rowcol(win_T *wp, int row, int col) |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
1913 { |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
1914 wp->w_wantline = row; |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
1915 wp->w_wantcol = col; |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
1916 popup_adjust_position(wp); |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
1917 } |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
1918 |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
1919 /* |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
1920 * Add a border and lef&right padding. |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
1921 */ |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
1922 static void |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
1923 add_border_left_right_padding(win_T *wp) |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
1924 { |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
1925 int i; |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
1926 |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
1927 for (i = 0; i < 4; ++i) |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
1928 { |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
1929 wp->w_popup_border[i] = 1; |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
1930 wp->w_popup_padding[i] = (i & 1) ? 1 : 0; |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
1931 } |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
1932 } |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
1933 |
20476
77995c0a9e78
patch 8.2.0792: build failure with small features
Bram Moolenaar <Bram@vim.org>
parents:
20474
diff
changeset
|
1934 #ifdef FEAT_TERMINAL |
17767
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
1935 /* |
20474
3fe45aa3bbc5
patch 8.2.0791: a second popup window with terminal causes trouble
Bram Moolenaar <Bram@vim.org>
parents:
20392
diff
changeset
|
1936 * Return TRUE if there is any popup window with a terminal buffer. |
3fe45aa3bbc5
patch 8.2.0791: a second popup window with terminal causes trouble
Bram Moolenaar <Bram@vim.org>
parents:
20392
diff
changeset
|
1937 */ |
3fe45aa3bbc5
patch 8.2.0791: a second popup window with terminal causes trouble
Bram Moolenaar <Bram@vim.org>
parents:
20392
diff
changeset
|
1938 static int |
3fe45aa3bbc5
patch 8.2.0791: a second popup window with terminal causes trouble
Bram Moolenaar <Bram@vim.org>
parents:
20392
diff
changeset
|
1939 popup_terminal_exists(void) |
3fe45aa3bbc5
patch 8.2.0791: a second popup window with terminal causes trouble
Bram Moolenaar <Bram@vim.org>
parents:
20392
diff
changeset
|
1940 { |
3fe45aa3bbc5
patch 8.2.0791: a second popup window with terminal causes trouble
Bram Moolenaar <Bram@vim.org>
parents:
20392
diff
changeset
|
1941 win_T *wp; |
3fe45aa3bbc5
patch 8.2.0791: a second popup window with terminal causes trouble
Bram Moolenaar <Bram@vim.org>
parents:
20392
diff
changeset
|
1942 tabpage_T *tp; |
3fe45aa3bbc5
patch 8.2.0791: a second popup window with terminal causes trouble
Bram Moolenaar <Bram@vim.org>
parents:
20392
diff
changeset
|
1943 |
3fe45aa3bbc5
patch 8.2.0791: a second popup window with terminal causes trouble
Bram Moolenaar <Bram@vim.org>
parents:
20392
diff
changeset
|
1944 FOR_ALL_POPUPWINS(wp) |
3fe45aa3bbc5
patch 8.2.0791: a second popup window with terminal causes trouble
Bram Moolenaar <Bram@vim.org>
parents:
20392
diff
changeset
|
1945 if (wp->w_buffer->b_term != NULL) |
3fe45aa3bbc5
patch 8.2.0791: a second popup window with terminal causes trouble
Bram Moolenaar <Bram@vim.org>
parents:
20392
diff
changeset
|
1946 return TRUE; |
3fe45aa3bbc5
patch 8.2.0791: a second popup window with terminal causes trouble
Bram Moolenaar <Bram@vim.org>
parents:
20392
diff
changeset
|
1947 FOR_ALL_TABPAGES(tp) |
3fe45aa3bbc5
patch 8.2.0791: a second popup window with terminal causes trouble
Bram Moolenaar <Bram@vim.org>
parents:
20392
diff
changeset
|
1948 FOR_ALL_POPUPWINS_IN_TAB(tp, wp) |
3fe45aa3bbc5
patch 8.2.0791: a second popup window with terminal causes trouble
Bram Moolenaar <Bram@vim.org>
parents:
20392
diff
changeset
|
1949 if (wp->w_buffer->b_term != NULL) |
3fe45aa3bbc5
patch 8.2.0791: a second popup window with terminal causes trouble
Bram Moolenaar <Bram@vim.org>
parents:
20392
diff
changeset
|
1950 return TRUE; |
3fe45aa3bbc5
patch 8.2.0791: a second popup window with terminal causes trouble
Bram Moolenaar <Bram@vim.org>
parents:
20392
diff
changeset
|
1951 return FALSE; |
3fe45aa3bbc5
patch 8.2.0791: a second popup window with terminal causes trouble
Bram Moolenaar <Bram@vim.org>
parents:
20392
diff
changeset
|
1952 } |
20476
77995c0a9e78
patch 8.2.0792: build failure with small features
Bram Moolenaar <Bram@vim.org>
parents:
20474
diff
changeset
|
1953 #endif |
20474
3fe45aa3bbc5
patch 8.2.0791: a second popup window with terminal causes trouble
Bram Moolenaar <Bram@vim.org>
parents:
20392
diff
changeset
|
1954 |
3fe45aa3bbc5
patch 8.2.0791: a second popup window with terminal causes trouble
Bram Moolenaar <Bram@vim.org>
parents:
20392
diff
changeset
|
1955 /* |
29958
549994614a5a
patch 9.0.0317: when updating the whole screen a popup may not be redrawn
Bram Moolenaar <Bram@vim.org>
parents:
29916
diff
changeset
|
1956 * Mark all popup windows in the current tab and global for redrawing. |
549994614a5a
patch 9.0.0317: when updating the whole screen a popup may not be redrawn
Bram Moolenaar <Bram@vim.org>
parents:
29916
diff
changeset
|
1957 */ |
549994614a5a
patch 9.0.0317: when updating the whole screen a popup may not be redrawn
Bram Moolenaar <Bram@vim.org>
parents:
29916
diff
changeset
|
1958 void |
549994614a5a
patch 9.0.0317: when updating the whole screen a popup may not be redrawn
Bram Moolenaar <Bram@vim.org>
parents:
29916
diff
changeset
|
1959 popup_redraw_all(void) |
549994614a5a
patch 9.0.0317: when updating the whole screen a popup may not be redrawn
Bram Moolenaar <Bram@vim.org>
parents:
29916
diff
changeset
|
1960 { |
549994614a5a
patch 9.0.0317: when updating the whole screen a popup may not be redrawn
Bram Moolenaar <Bram@vim.org>
parents:
29916
diff
changeset
|
1961 win_T *wp; |
549994614a5a
patch 9.0.0317: when updating the whole screen a popup may not be redrawn
Bram Moolenaar <Bram@vim.org>
parents:
29916
diff
changeset
|
1962 |
549994614a5a
patch 9.0.0317: when updating the whole screen a popup may not be redrawn
Bram Moolenaar <Bram@vim.org>
parents:
29916
diff
changeset
|
1963 FOR_ALL_POPUPWINS(wp) |
549994614a5a
patch 9.0.0317: when updating the whole screen a popup may not be redrawn
Bram Moolenaar <Bram@vim.org>
parents:
29916
diff
changeset
|
1964 wp->w_redr_type = UPD_NOT_VALID; |
549994614a5a
patch 9.0.0317: when updating the whole screen a popup may not be redrawn
Bram Moolenaar <Bram@vim.org>
parents:
29916
diff
changeset
|
1965 FOR_ALL_POPUPWINS_IN_TAB(curtab, wp) |
549994614a5a
patch 9.0.0317: when updating the whole screen a popup may not be redrawn
Bram Moolenaar <Bram@vim.org>
parents:
29916
diff
changeset
|
1966 wp->w_redr_type = UPD_NOT_VALID; |
549994614a5a
patch 9.0.0317: when updating the whole screen a popup may not be redrawn
Bram Moolenaar <Bram@vim.org>
parents:
29916
diff
changeset
|
1967 } |
549994614a5a
patch 9.0.0317: when updating the whole screen a popup may not be redrawn
Bram Moolenaar <Bram@vim.org>
parents:
29916
diff
changeset
|
1968 |
549994614a5a
patch 9.0.0317: when updating the whole screen a popup may not be redrawn
Bram Moolenaar <Bram@vim.org>
parents:
29916
diff
changeset
|
1969 /* |
29900
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
1970 * Set the color for a notification window. |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
1971 */ |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
1972 static void |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
1973 popup_update_color(win_T *wp, create_type_T type) |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
1974 { |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
1975 char *hiname = type == TYPE_MESSAGE_WIN |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
1976 ? "MessageWindow" : "PopupNotification"; |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
1977 int nr = syn_name2id((char_u *)hiname); |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
1978 |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
1979 set_string_option_direct_in_win(wp, (char_u *)"wincolor", -1, |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
1980 (char_u *)(nr == 0 ? "WarningMsg" : hiname), |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
1981 OPT_FREE|OPT_LOCAL, 0); |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
1982 } |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
1983 |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
1984 /* |
16778
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1985 * popup_create({text}, {options}) |
16853
e6bcccccbf7b
patch 8.1.1428: popup_atcursor() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16851
diff
changeset
|
1986 * popup_atcursor({text}, {options}) |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1987 * etc. |
17767
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
1988 * When creating a preview or info popup "argvars" and "rettv" are NULL. |
16778
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1989 */ |
17117
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
1990 static win_T * |
16908
df06694b761b
patch 8.1.1455: popup_atcursor() not completely implemented
Bram Moolenaar <Bram@vim.org>
parents:
16904
diff
changeset
|
1991 popup_create(typval_T *argvars, typval_T *rettv, create_type_T type) |
16778
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1992 { |
17149
c90fdb999393
patch 8.1.1574: tabpage option not yet implemented for popup window
Bram Moolenaar <Bram@vim.org>
parents:
17125
diff
changeset
|
1993 win_T *wp; |
c90fdb999393
patch 8.1.1574: tabpage option not yet implemented for popup window
Bram Moolenaar <Bram@vim.org>
parents:
17125
diff
changeset
|
1994 tabpage_T *tp = NULL; |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1995 int tabnr = 0; |
17225
09fa437d33d8
patch 8.1.1612: cannot show an existing buffer in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17219
diff
changeset
|
1996 int new_buffer; |
09fa437d33d8
patch 8.1.1612: cannot show an existing buffer in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17219
diff
changeset
|
1997 buf_T *buf = NULL; |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
1998 dict_T *d = NULL; |
17149
c90fdb999393
patch 8.1.1574: tabpage option not yet implemented for popup window
Bram Moolenaar <Bram@vim.org>
parents:
17125
diff
changeset
|
1999 int i; |
16778
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2000 |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
2001 if (argvars != NULL) |
17225
09fa437d33d8
patch 8.1.1612: cannot show an existing buffer in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17219
diff
changeset
|
2002 { |
26127
80e69293217c
patch 8.2.3596: crash when using :pedit in Vim9 script
Bram Moolenaar <Bram@vim.org>
parents:
25535
diff
changeset
|
2003 if (in_vim9script() |
80e69293217c
patch 8.2.3596: crash when using :pedit in Vim9 script
Bram Moolenaar <Bram@vim.org>
parents:
25535
diff
changeset
|
2004 && (check_for_string_or_number_or_list_arg(argvars, 0) == FAIL |
80e69293217c
patch 8.2.3596: crash when using :pedit in Vim9 script
Bram Moolenaar <Bram@vim.org>
parents:
25535
diff
changeset
|
2005 || check_for_dict_arg(argvars, 1) == FAIL)) |
80e69293217c
patch 8.2.3596: crash when using :pedit in Vim9 script
Bram Moolenaar <Bram@vim.org>
parents:
25535
diff
changeset
|
2006 return NULL; |
80e69293217c
patch 8.2.3596: crash when using :pedit in Vim9 script
Bram Moolenaar <Bram@vim.org>
parents:
25535
diff
changeset
|
2007 |
17440
a5874fdc8f3a
patch 8.1.1718: popup menu highlighting does not look good
Bram Moolenaar <Bram@vim.org>
parents:
17431
diff
changeset
|
2008 // Check that arguments look OK. |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
2009 if (argvars[0].v_type == VAR_NUMBER) |
17225
09fa437d33d8
patch 8.1.1612: cannot show an existing buffer in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17219
diff
changeset
|
2010 { |
18868
5fbb167591fc
patch 8.1.2420: crash when calling popup_close() in win_execute()
Bram Moolenaar <Bram@vim.org>
parents:
18767
diff
changeset
|
2011 buf = buflist_findnr(argvars[0].vval.v_number); |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
2012 if (buf == NULL) |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
2013 { |
26439
b18f3b0f317c
patch 8.2.3750: error messages are everywhere
Bram Moolenaar <Bram@vim.org>
parents:
26332
diff
changeset
|
2014 semsg(_(e_buffer_nr_does_not_exist), argvars[0].vval.v_number); |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
2015 return NULL; |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
2016 } |
20474
3fe45aa3bbc5
patch 8.2.0791: a second popup window with terminal causes trouble
Bram Moolenaar <Bram@vim.org>
parents:
20392
diff
changeset
|
2017 #ifdef FEAT_TERMINAL |
3fe45aa3bbc5
patch 8.2.0791: a second popup window with terminal causes trouble
Bram Moolenaar <Bram@vim.org>
parents:
20392
diff
changeset
|
2018 if (buf->b_term != NULL && popup_terminal_exists()) |
3fe45aa3bbc5
patch 8.2.0791: a second popup window with terminal causes trouble
Bram Moolenaar <Bram@vim.org>
parents:
20392
diff
changeset
|
2019 { |
26962
85866e069c24
patch 8.2.4010: error messages are spread out
Bram Moolenaar <Bram@vim.org>
parents:
26915
diff
changeset
|
2020 emsg(_(e_cannot_open_second_popup_with_terminal)); |
20474
3fe45aa3bbc5
patch 8.2.0791: a second popup window with terminal causes trouble
Bram Moolenaar <Bram@vim.org>
parents:
20392
diff
changeset
|
2021 return NULL; |
3fe45aa3bbc5
patch 8.2.0791: a second popup window with terminal causes trouble
Bram Moolenaar <Bram@vim.org>
parents:
20392
diff
changeset
|
2022 } |
3fe45aa3bbc5
patch 8.2.0791: a second popup window with terminal causes trouble
Bram Moolenaar <Bram@vim.org>
parents:
20392
diff
changeset
|
2023 #endif |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
2024 } |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
2025 else if (!(argvars[0].v_type == VAR_STRING |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
2026 && argvars[0].vval.v_string != NULL) |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
2027 && !(argvars[0].v_type == VAR_LIST |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
2028 && argvars[0].vval.v_list != NULL)) |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
2029 { |
26915
3631d2deb36c
patch 8.2.3986: error messages are spread out
Bram Moolenaar <Bram@vim.org>
parents:
26877
diff
changeset
|
2030 emsg(_(e_buffer_number_text_or_list_required)); |
17225
09fa437d33d8
patch 8.1.1612: cannot show an existing buffer in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17219
diff
changeset
|
2031 return NULL; |
09fa437d33d8
patch 8.1.1612: cannot show an existing buffer in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17219
diff
changeset
|
2032 } |
29994
86eb4aba16c3
patch 9.0.0335: checks for Dictionary argument often give a vague error
Bram Moolenaar <Bram@vim.org>
parents:
29966
diff
changeset
|
2033 if (check_for_nonnull_dict_arg(argvars, 1) == FAIL) |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
2034 return NULL; |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
2035 d = argvars[1].vval.v_dict; |
16778
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2036 } |
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2037 |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
2038 if (d != NULL) |
17149
c90fdb999393
patch 8.1.1574: tabpage option not yet implemented for popup window
Bram Moolenaar <Bram@vim.org>
parents:
17125
diff
changeset
|
2039 { |
28315
62cc3b60493b
patch 8.2.4683: verbose check with dict_find() to see if a key is present
Bram Moolenaar <Bram@vim.org>
parents:
28285
diff
changeset
|
2040 if (dict_has_key(d, "tabpage")) |
29442
827d9f2b7a71
patch 9.0.0063: too many type casts for dict_get functions
Bram Moolenaar <Bram@vim.org>
parents:
29239
diff
changeset
|
2041 tabnr = (int)dict_get_number(d, "tabpage"); |
29900
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
2042 else if (popup_is_notification(type)) |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
2043 tabnr = -1; // notifications are global by default |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
2044 else |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
2045 tabnr = 0; |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
2046 if (tabnr > 0) |
17149
c90fdb999393
patch 8.1.1574: tabpage option not yet implemented for popup window
Bram Moolenaar <Bram@vim.org>
parents:
17125
diff
changeset
|
2047 { |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
2048 tp = find_tabpage(tabnr); |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
2049 if (tp == NULL) |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
2050 { |
26986
79ea140936e9
patch 8.2.4022: two error messages in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
26962
diff
changeset
|
2051 semsg(_(e_tabpage_not_found_nr), tabnr); |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
2052 return NULL; |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
2053 } |
17149
c90fdb999393
patch 8.1.1574: tabpage option not yet implemented for popup window
Bram Moolenaar <Bram@vim.org>
parents:
17125
diff
changeset
|
2054 } |
c90fdb999393
patch 8.1.1574: tabpage option not yet implemented for popup window
Bram Moolenaar <Bram@vim.org>
parents:
17125
diff
changeset
|
2055 } |
c90fdb999393
patch 8.1.1574: tabpage option not yet implemented for popup window
Bram Moolenaar <Bram@vim.org>
parents:
17125
diff
changeset
|
2056 |
16778
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2057 // Create the window and buffer. |
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2058 wp = win_alloc_popup_win(); |
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2059 if (wp == NULL) |
17117
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2060 return NULL; |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
2061 if (rettv != NULL) |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
2062 rettv->vval.v_number = wp->w_id; |
16855
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
2063 wp->w_popup_pos = POPPOS_TOPLEFT; |
18542
244b336b94ce
patch 8.1.2265: when popup with "botleft" does not fit it flips incorrectly
Bram Moolenaar <Bram@vim.org>
parents:
18512
diff
changeset
|
2064 wp->w_popup_flags = POPF_IS_POPUP | POPF_MAPPING | POPF_POSINVERT; |
16778
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2065 |
17225
09fa437d33d8
patch 8.1.1612: cannot show an existing buffer in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17219
diff
changeset
|
2066 if (buf != NULL) |
09fa437d33d8
patch 8.1.1612: cannot show an existing buffer in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17219
diff
changeset
|
2067 { |
09fa437d33d8
patch 8.1.1612: cannot show an existing buffer in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17219
diff
changeset
|
2068 // use existing buffer |
09fa437d33d8
patch 8.1.1612: cannot show an existing buffer in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17219
diff
changeset
|
2069 new_buffer = FALSE; |
17231
e9ebf3f27af6
patch 8.1.1615: crash when passing buffer number to popup_create()
Bram Moolenaar <Bram@vim.org>
parents:
17225
diff
changeset
|
2070 win_init_popup_win(wp, buf); |
17845
b6acc24df7de
patch 8.1.1919: using window options when passing a buffer to popup_create()
Bram Moolenaar <Bram@vim.org>
parents:
17843
diff
changeset
|
2071 set_local_options_default(wp, FALSE); |
28319
427600f3b1c5
patch 8.2.4685: when a swap file is found for a popup there is no dialog
Bram Moolenaar <Bram@vim.org>
parents:
28315
diff
changeset
|
2072 swap_exists_action = SEA_READONLY; |
17225
09fa437d33d8
patch 8.1.1612: cannot show an existing buffer in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17219
diff
changeset
|
2073 buffer_ensure_loaded(buf); |
28319
427600f3b1c5
patch 8.2.4685: when a swap file is found for a popup there is no dialog
Bram Moolenaar <Bram@vim.org>
parents:
28315
diff
changeset
|
2074 swap_exists_action = SEA_NONE; |
17225
09fa437d33d8
patch 8.1.1612: cannot show an existing buffer in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17219
diff
changeset
|
2075 } |
09fa437d33d8
patch 8.1.1612: cannot show an existing buffer in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17219
diff
changeset
|
2076 else |
09fa437d33d8
patch 8.1.1612: cannot show an existing buffer in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17219
diff
changeset
|
2077 { |
09fa437d33d8
patch 8.1.1612: cannot show an existing buffer in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17219
diff
changeset
|
2078 // create a new buffer associated with the popup |
09fa437d33d8
patch 8.1.1612: cannot show an existing buffer in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17219
diff
changeset
|
2079 new_buffer = TRUE; |
17823
7e6b7a4f13bc
patch 8.1.1908: every popup window consumes a buffer number
Bram Moolenaar <Bram@vim.org>
parents:
17821
diff
changeset
|
2080 buf = buflist_new(NULL, NULL, (linenr_T)0, BLN_NEW|BLN_DUMMY|BLN_REUSE); |
17225
09fa437d33d8
patch 8.1.1612: cannot show an existing buffer in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17219
diff
changeset
|
2081 if (buf == NULL) |
28285
a4aad5142959
patch 8.2.4668: buffer allocation failures insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
28279
diff
changeset
|
2082 { |
a4aad5142959
patch 8.2.4668: buffer allocation failures insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
28279
diff
changeset
|
2083 win_free_popup(wp); |
17225
09fa437d33d8
patch 8.1.1612: cannot show an existing buffer in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17219
diff
changeset
|
2084 return NULL; |
28285
a4aad5142959
patch 8.2.4668: buffer allocation failures insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
28279
diff
changeset
|
2085 } |
17225
09fa437d33d8
patch 8.1.1612: cannot show an existing buffer in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17219
diff
changeset
|
2086 ml_open(buf); |
16843
283037126560
patch 8.1.1423: popup windows use options from current window and buffer
Bram Moolenaar <Bram@vim.org>
parents:
16841
diff
changeset
|
2087 |
17225
09fa437d33d8
patch 8.1.1612: cannot show an existing buffer in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17219
diff
changeset
|
2088 win_init_popup_win(wp, buf); |
16843
283037126560
patch 8.1.1423: popup windows use options from current window and buffer
Bram Moolenaar <Bram@vim.org>
parents:
16841
diff
changeset
|
2089 |
17845
b6acc24df7de
patch 8.1.1919: using window options when passing a buffer to popup_create()
Bram Moolenaar <Bram@vim.org>
parents:
17843
diff
changeset
|
2090 set_local_options_default(wp, TRUE); |
17225
09fa437d33d8
patch 8.1.1612: cannot show an existing buffer in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17219
diff
changeset
|
2091 set_string_option_direct_in_buf(buf, (char_u *)"buftype", -1, |
16778
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2092 (char_u *)"popup", OPT_FREE|OPT_LOCAL, 0); |
17225
09fa437d33d8
patch 8.1.1612: cannot show an existing buffer in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17219
diff
changeset
|
2093 set_string_option_direct_in_buf(buf, (char_u *)"bufhidden", -1, |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
2094 (char_u *)"wipe", OPT_FREE|OPT_LOCAL, 0); |
17225
09fa437d33d8
patch 8.1.1612: cannot show an existing buffer in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17219
diff
changeset
|
2095 buf->b_p_ul = -1; // no undo |
09fa437d33d8
patch 8.1.1612: cannot show an existing buffer in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17219
diff
changeset
|
2096 buf->b_p_swf = FALSE; // no swap file |
09fa437d33d8
patch 8.1.1612: cannot show an existing buffer in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17219
diff
changeset
|
2097 buf->b_p_bl = FALSE; // unlisted buffer |
23869
5a4f9c5c1b99
patch 8.2.2476: using freed memory when splitting window while closing buffer
Bram Moolenaar <Bram@vim.org>
parents:
23859
diff
changeset
|
2098 buf->b_locked = TRUE; // prevent deleting the buffer |
16855
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
2099 |
17225
09fa437d33d8
patch 8.1.1612: cannot show an existing buffer in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17219
diff
changeset
|
2100 // Avoid that 'buftype' is reset when this buffer is entered. |
09fa437d33d8
patch 8.1.1612: cannot show an existing buffer in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17219
diff
changeset
|
2101 buf->b_p_initialized = TRUE; |
09fa437d33d8
patch 8.1.1612: cannot show an existing buffer in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17219
diff
changeset
|
2102 } |
17926
ad7a4bd65f20
patch 8.1.1959: when using "firstline" in popup window text may jump
Bram Moolenaar <Bram@vim.org>
parents:
17905
diff
changeset
|
2103 wp->w_p_wrap = TRUE; // 'wrap' is default on |
ad7a4bd65f20
patch 8.1.1959: when using "firstline" in popup window text may jump
Bram Moolenaar <Bram@vim.org>
parents:
17905
diff
changeset
|
2104 wp->w_p_so = 0; // 'scrolloff' zero |
16778
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2105 |
17149
c90fdb999393
patch 8.1.1574: tabpage option not yet implemented for popup window
Bram Moolenaar <Bram@vim.org>
parents:
17125
diff
changeset
|
2106 if (tp != NULL) |
c90fdb999393
patch 8.1.1574: tabpage option not yet implemented for popup window
Bram Moolenaar <Bram@vim.org>
parents:
17125
diff
changeset
|
2107 { |
c90fdb999393
patch 8.1.1574: tabpage option not yet implemented for popup window
Bram Moolenaar <Bram@vim.org>
parents:
17125
diff
changeset
|
2108 // popup on specified tab page |
c90fdb999393
patch 8.1.1574: tabpage option not yet implemented for popup window
Bram Moolenaar <Bram@vim.org>
parents:
17125
diff
changeset
|
2109 wp->w_next = tp->tp_first_popupwin; |
c90fdb999393
patch 8.1.1574: tabpage option not yet implemented for popup window
Bram Moolenaar <Bram@vim.org>
parents:
17125
diff
changeset
|
2110 tp->tp_first_popupwin = wp; |
c90fdb999393
patch 8.1.1574: tabpage option not yet implemented for popup window
Bram Moolenaar <Bram@vim.org>
parents:
17125
diff
changeset
|
2111 } |
c90fdb999393
patch 8.1.1574: tabpage option not yet implemented for popup window
Bram Moolenaar <Bram@vim.org>
parents:
17125
diff
changeset
|
2112 else if (tabnr == 0) |
16778
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2113 { |
17075
dacd46fbaa90
patch 8.1.1537: using "tab" for popup window can be confusing
Bram Moolenaar <Bram@vim.org>
parents:
17057
diff
changeset
|
2114 // popup on current tab page |
16796
5f98d80d116a
patch 8.1.1400: using global pointer for tab-local popups is clumsy
Bram Moolenaar <Bram@vim.org>
parents:
16794
diff
changeset
|
2115 wp->w_next = curtab->tp_first_popupwin; |
5f98d80d116a
patch 8.1.1400: using global pointer for tab-local popups is clumsy
Bram Moolenaar <Bram@vim.org>
parents:
16794
diff
changeset
|
2116 curtab->tp_first_popupwin = wp; |
16778
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2117 } |
17149
c90fdb999393
patch 8.1.1574: tabpage option not yet implemented for popup window
Bram Moolenaar <Bram@vim.org>
parents:
17125
diff
changeset
|
2118 else // (tabnr < 0) |
16778
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2119 { |
17045
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
2120 win_T *prev = first_popupwin; |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
2121 |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
2122 // Global popup: add at the end, so that it gets displayed on top of |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
2123 // older ones with the same zindex. Matters for notifications. |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
2124 if (first_popupwin == NULL) |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
2125 first_popupwin = wp; |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
2126 else |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
2127 { |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
2128 while (prev->w_next != NULL) |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
2129 prev = prev->w_next; |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
2130 prev->w_next = wp; |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
2131 } |
16778
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2132 } |
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2133 |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
2134 if (new_buffer && argvars != NULL) |
17225
09fa437d33d8
patch 8.1.1612: cannot show an existing buffer in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17219
diff
changeset
|
2135 popup_set_buffer_text(buf, argvars[0]); |
16778
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2136 |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
2137 if (type == TYPE_ATCURSOR || type == TYPE_PREVIEW) |
16908
df06694b761b
patch 8.1.1455: popup_atcursor() not completely implemented
Bram Moolenaar <Bram@vim.org>
parents:
16904
diff
changeset
|
2138 { |
df06694b761b
patch 8.1.1455: popup_atcursor() not completely implemented
Bram Moolenaar <Bram@vim.org>
parents:
16904
diff
changeset
|
2139 wp->w_popup_pos = POPPOS_BOTLEFT; |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
2140 } |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
2141 if (type == TYPE_ATCURSOR) |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
2142 { |
18558
e5ef5d820b5b
patch 8.1.2273: wrong default when "pos" is changed with popup_atcursor()
Bram Moolenaar <Bram@vim.org>
parents:
18544
diff
changeset
|
2143 popup_set_wantpos_cursor(wp, 0, d); |
16908
df06694b761b
patch 8.1.1455: popup_atcursor() not completely implemented
Bram Moolenaar <Bram@vim.org>
parents:
16904
diff
changeset
|
2144 set_moved_values(wp); |
df06694b761b
patch 8.1.1455: popup_atcursor() not completely implemented
Bram Moolenaar <Bram@vim.org>
parents:
16904
diff
changeset
|
2145 set_moved_columns(wp, FIND_STRING); |
df06694b761b
patch 8.1.1455: popup_atcursor() not completely implemented
Bram Moolenaar <Bram@vim.org>
parents:
16904
diff
changeset
|
2146 } |
df06694b761b
patch 8.1.1455: popup_atcursor() not completely implemented
Bram Moolenaar <Bram@vim.org>
parents:
16904
diff
changeset
|
2147 |
17292
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2148 if (type == TYPE_BEVAL) |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2149 { |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2150 wp->w_popup_pos = POPPOS_BOTLEFT; |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2151 |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2152 // by default use the mouse position |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2153 wp->w_wantline = mouse_row; |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2154 if (wp->w_wantline <= 0) // mouse on first line |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2155 { |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2156 wp->w_wantline = 2; |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2157 wp->w_popup_pos = POPPOS_TOPLEFT; |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2158 } |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2159 wp->w_wantcol = mouse_col + 1; |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2160 set_mousemoved_values(wp); |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2161 set_mousemoved_columns(wp, FIND_IDENT + FIND_STRING + FIND_EVAL); |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2162 } |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2163 |
16986
03f3a9ca2770
patch 8.1.1493: redrawing with popups is slow and causes flicker
Bram Moolenaar <Bram@vim.org>
parents:
16908
diff
changeset
|
2164 // set default values |
03f3a9ca2770
patch 8.1.1493: redrawing with popups is slow and causes flicker
Bram Moolenaar <Bram@vim.org>
parents:
16908
diff
changeset
|
2165 wp->w_zindex = POPUPWIN_DEFAULT_ZINDEX; |
17219
5169811b3044
patch 8.1.1609: the user cannot easily close a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17216
diff
changeset
|
2166 wp->w_popup_close = POPCLOSE_NONE; |
16986
03f3a9ca2770
patch 8.1.1493: redrawing with popups is slow and causes flicker
Bram Moolenaar <Bram@vim.org>
parents:
16908
diff
changeset
|
2167 |
29900
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
2168 if (popup_is_notification(type)) |
17045
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
2169 { |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
2170 win_T *twp, *nextwin; |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
2171 int height = buf->b_ml.ml_line_count + 3; |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
2172 |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
2173 // Try to not overlap with another global popup. Guess we need 3 |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
2174 // more screen lines than buffer lines. |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
2175 wp->w_wantline = 1; |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
2176 for (twp = first_popupwin; twp != NULL; twp = nextwin) |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
2177 { |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
2178 nextwin = twp->w_next; |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
2179 if (twp != wp |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
2180 && twp->w_zindex == POPUPWIN_NOTIFICATION_ZINDEX |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
2181 && twp->w_winrow <= wp->w_wantline - 1 + height |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
2182 && twp->w_winrow + popup_height(twp) > wp->w_wantline - 1) |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
2183 { |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
2184 // move to below this popup and restart the loop to check for |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
2185 // overlap with other popups |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
2186 wp->w_wantline = twp->w_winrow + popup_height(twp) + 1; |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
2187 nextwin = first_popupwin; |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
2188 } |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
2189 } |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
2190 if (wp->w_wantline + height > Rows) |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
2191 { |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
2192 // can't avoid overlap, put on top in the hope that message goes |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
2193 // away soon. |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
2194 wp->w_wantline = 1; |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
2195 } |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
2196 |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
2197 wp->w_wantcol = 10; |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
2198 wp->w_zindex = POPUPWIN_NOTIFICATION_ZINDEX; |
17077
2546930657a9
patch 8.1.1538: cannot specify highlighting for notifications
Bram Moolenaar <Bram@vim.org>
parents:
17075
diff
changeset
|
2199 wp->w_minwidth = 20; |
17580
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
2200 wp->w_popup_flags |= POPF_DRAG; |
17219
5169811b3044
patch 8.1.1609: the user cannot easily close a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17216
diff
changeset
|
2201 wp->w_popup_close = POPCLOSE_CLICK; |
17045
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
2202 for (i = 0; i < 4; ++i) |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
2203 wp->w_popup_border[i] = 1; |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
2204 wp->w_popup_padding[1] = 1; |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
2205 wp->w_popup_padding[3] = 1; |
17077
2546930657a9
patch 8.1.1538: cannot specify highlighting for notifications
Bram Moolenaar <Bram@vim.org>
parents:
17075
diff
changeset
|
2206 |
29900
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
2207 popup_update_color(wp, type); |
17045
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
2208 } |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
2209 |
17117
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2210 if (type == TYPE_DIALOG || type == TYPE_MENU) |
17097
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2211 { |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2212 wp->w_popup_pos = POPPOS_CENTER; |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2213 wp->w_zindex = POPUPWIN_DIALOG_ZINDEX; |
17580
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
2214 wp->w_popup_flags |= POPF_DRAG; |
17604
506dd2efcbb2
patch 8.1.1799: cannot avoid mapping for a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17584
diff
changeset
|
2215 wp->w_popup_flags &= ~POPF_MAPPING; |
17767
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
2216 add_border_left_right_padding(wp); |
17097
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2217 } |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2218 |
17117
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2219 if (type == TYPE_MENU) |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2220 { |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2221 typval_T tv; |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2222 callback_T callback; |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2223 |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2224 tv.v_type = VAR_STRING; |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2225 tv.vval.v_string = (char_u *)"popup_filter_menu"; |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2226 callback = get_callback(&tv); |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2227 if (callback.cb_name != NULL) |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2228 set_callback(&wp->w_filter_cb, &callback); |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2229 |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2230 wp->w_p_wrap = 0; |
17429
6e756ad5ef1a
patch 8.1.1713: highlighting cursor line only works with popup_menu()
Bram Moolenaar <Bram@vim.org>
parents:
17421
diff
changeset
|
2231 wp->w_popup_flags |= POPF_CURSORLINE; |
17117
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2232 } |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2233 |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
2234 if (type == TYPE_PREVIEW) |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
2235 { |
17580
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
2236 wp->w_popup_flags |= POPF_DRAG | POPF_RESIZE; |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
2237 wp->w_popup_close = POPCLOSE_BUTTON; |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
2238 for (i = 0; i < 4; ++i) |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
2239 wp->w_popup_border[i] = 1; |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
2240 parse_previewpopup(wp); |
18558
e5ef5d820b5b
patch 8.1.2273: wrong default when "pos" is changed with popup_atcursor()
Bram Moolenaar <Bram@vim.org>
parents:
18544
diff
changeset
|
2241 popup_set_wantpos_cursor(wp, wp->w_minwidth, d); |
17767
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
2242 } |
17791
55c167b08c2b
patch 8.1.1892: missing index entry and option menu for 'completepopup'
Bram Moolenaar <Bram@vim.org>
parents:
17789
diff
changeset
|
2243 # ifdef FEAT_QUICKFIX |
17767
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
2244 if (type == TYPE_INFO) |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
2245 { |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
2246 wp->w_popup_pos = POPPOS_TOPLEFT; |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
2247 wp->w_popup_flags |= POPF_DRAG | POPF_RESIZE; |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
2248 wp->w_popup_close = POPCLOSE_BUTTON; |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
2249 add_border_left_right_padding(wp); |
17771
4bd21046902b
patch 8.1.1882: cannot specify properties of the info popup window
Bram Moolenaar <Bram@vim.org>
parents:
17767
diff
changeset
|
2250 parse_completepopup(wp); |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
2251 } |
17791
55c167b08c2b
patch 8.1.1892: missing index entry and option menu for 'completepopup'
Bram Moolenaar <Bram@vim.org>
parents:
17789
diff
changeset
|
2252 # endif |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
2253 |
17123
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
2254 for (i = 0; i < 4; ++i) |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
2255 VIM_CLEAR(wp->w_border_highlight[i]); |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
2256 for (i = 0; i < 8; ++i) |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
2257 wp->w_border_char[i] = 0; |
17180
8581779aa16f
patch 8.1.1589: popup window does not indicate scroll position
Bram Moolenaar <Bram@vim.org>
parents:
17174
diff
changeset
|
2258 wp->w_want_scrollbar = 1; |
17206
8ca93f88b84a
patch 8.1.1602: popup window cannot overflow on the left or right
Bram Moolenaar <Bram@vim.org>
parents:
17202
diff
changeset
|
2259 wp->w_popup_fixed = 0; |
17946
ec4248c4b92c
patch 8.1.1969: popup window filter is used in all modes
Bram Moolenaar <Bram@vim.org>
parents:
17934
diff
changeset
|
2260 wp->w_filter_mode = MODE_ALL; |
17123
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
2261 |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
2262 if (d != NULL) |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
2263 // Deal with options. |
22403
3351d2cd3f1f
patch 8.2.1750: popup_setoptions() setting firstline fails if cursorline set
Bram Moolenaar <Bram@vim.org>
parents:
22377
diff
changeset
|
2264 apply_options(wp, d, TRUE); |
16778
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2265 |
17166
59a4e78ccc5c
patch 8.1.1582: cannot build with +textprop but without +timers
Bram Moolenaar <Bram@vim.org>
parents:
17162
diff
changeset
|
2266 #ifdef FEAT_TIMERS |
29900
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
2267 if (popup_is_notification(type) && wp->w_popup_timer == NULL) |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
2268 popup_add_timeout(wp, 3000, type == TYPE_NOTIFICATION); |
17166
59a4e78ccc5c
patch 8.1.1582: cannot build with +textprop but without +timers
Bram Moolenaar <Bram@vim.org>
parents:
17162
diff
changeset
|
2269 #endif |
17045
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
2270 |
16817
069ee8dc8c8d
patch 8.1.1410: popup_move() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16813
diff
changeset
|
2271 popup_adjust_position(wp); |
16778
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2272 |
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2273 wp->w_vsep_width = 0; |
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2274 |
29732
89e1d67814a9
patch 9.0.0206: redraw flags are not named specifically
Bram Moolenaar <Bram@vim.org>
parents:
29660
diff
changeset
|
2275 redraw_all_later(UPD_NOT_VALID); |
16986
03f3a9ca2770
patch 8.1.1493: redrawing with popups is slow and causes flicker
Bram Moolenaar <Bram@vim.org>
parents:
16908
diff
changeset
|
2276 popup_mask_refresh = TRUE; |
17117
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2277 |
19267
c7903f92ed75
patch 8.2.0192: build failure without +terminal feature
Bram Moolenaar <Bram@vim.org>
parents:
19265
diff
changeset
|
2278 #ifdef FEAT_TERMINAL |
19265
ce8c47ed54e5
patch 8.2.0191: cannot put a terminal in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
19241
diff
changeset
|
2279 // When running a terminal in the popup it becomes the current window. |
ce8c47ed54e5
patch 8.2.0191: cannot put a terminal in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
19241
diff
changeset
|
2280 if (buf->b_term != NULL) |
ce8c47ed54e5
patch 8.2.0191: cannot put a terminal in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
19241
diff
changeset
|
2281 win_enter(wp, FALSE); |
19267
c7903f92ed75
patch 8.2.0192: build failure without +terminal feature
Bram Moolenaar <Bram@vim.org>
parents:
19265
diff
changeset
|
2282 #endif |
19265
ce8c47ed54e5
patch 8.2.0191: cannot put a terminal in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
19241
diff
changeset
|
2283 |
17117
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2284 return wp; |
16778
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2285 } |
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2286 |
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2287 /* |
17026
905e1b154058
patch 8.1.1513: all popup functionality is in functions, except :popupclear
Bram Moolenaar <Bram@vim.org>
parents:
16992
diff
changeset
|
2288 * popup_clear() |
905e1b154058
patch 8.1.1513: all popup functionality is in functions, except :popupclear
Bram Moolenaar <Bram@vim.org>
parents:
16992
diff
changeset
|
2289 */ |
905e1b154058
patch 8.1.1513: all popup functionality is in functions, except :popupclear
Bram Moolenaar <Bram@vim.org>
parents:
16992
diff
changeset
|
2290 void |
20384
42ab4d40e78f
patch 8.2.0747: cannot forcefully close all popups
Bram Moolenaar <Bram@vim.org>
parents:
20382
diff
changeset
|
2291 f_popup_clear(typval_T *argvars, typval_T *rettv UNUSED) |
17026
905e1b154058
patch 8.1.1513: all popup functionality is in functions, except :popupclear
Bram Moolenaar <Bram@vim.org>
parents:
16992
diff
changeset
|
2292 { |
20384
42ab4d40e78f
patch 8.2.0747: cannot forcefully close all popups
Bram Moolenaar <Bram@vim.org>
parents:
20382
diff
changeset
|
2293 int force = FALSE; |
42ab4d40e78f
patch 8.2.0747: cannot forcefully close all popups
Bram Moolenaar <Bram@vim.org>
parents:
20382
diff
changeset
|
2294 |
25384
e8e2c4d33b9b
patch 8.2.3229: Vim9: runtime and compile time type checks are not the same
Bram Moolenaar <Bram@vim.org>
parents:
25368
diff
changeset
|
2295 if (in_vim9script() && check_for_opt_bool_arg(argvars, 0) == FAIL) |
e8e2c4d33b9b
patch 8.2.3229: Vim9: runtime and compile time type checks are not the same
Bram Moolenaar <Bram@vim.org>
parents:
25368
diff
changeset
|
2296 return; |
e8e2c4d33b9b
patch 8.2.3229: Vim9: runtime and compile time type checks are not the same
Bram Moolenaar <Bram@vim.org>
parents:
25368
diff
changeset
|
2297 |
20384
42ab4d40e78f
patch 8.2.0747: cannot forcefully close all popups
Bram Moolenaar <Bram@vim.org>
parents:
20382
diff
changeset
|
2298 if (argvars[0].v_type != VAR_UNKNOWN) |
22057
f64a16f5bff0
patch 8.2.1578: Vim9: popup_clear() does not take "true" as argument
Bram Moolenaar <Bram@vim.org>
parents:
21867
diff
changeset
|
2299 force = (int)tv_get_bool(&argvars[0]); |
20384
42ab4d40e78f
patch 8.2.0747: cannot forcefully close all popups
Bram Moolenaar <Bram@vim.org>
parents:
20382
diff
changeset
|
2300 close_all_popups(force); |
17026
905e1b154058
patch 8.1.1513: all popup functionality is in functions, except :popupclear
Bram Moolenaar <Bram@vim.org>
parents:
16992
diff
changeset
|
2301 } |
905e1b154058
patch 8.1.1513: all popup functionality is in functions, except :popupclear
Bram Moolenaar <Bram@vim.org>
parents:
16992
diff
changeset
|
2302 |
905e1b154058
patch 8.1.1513: all popup functionality is in functions, except :popupclear
Bram Moolenaar <Bram@vim.org>
parents:
16992
diff
changeset
|
2303 /* |
16853
e6bcccccbf7b
patch 8.1.1428: popup_atcursor() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16851
diff
changeset
|
2304 * popup_create({text}, {options}) |
e6bcccccbf7b
patch 8.1.1428: popup_atcursor() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16851
diff
changeset
|
2305 */ |
e6bcccccbf7b
patch 8.1.1428: popup_atcursor() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16851
diff
changeset
|
2306 void |
e6bcccccbf7b
patch 8.1.1428: popup_atcursor() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16851
diff
changeset
|
2307 f_popup_create(typval_T *argvars, typval_T *rettv) |
e6bcccccbf7b
patch 8.1.1428: popup_atcursor() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16851
diff
changeset
|
2308 { |
16908
df06694b761b
patch 8.1.1455: popup_atcursor() not completely implemented
Bram Moolenaar <Bram@vim.org>
parents:
16904
diff
changeset
|
2309 popup_create(argvars, rettv, TYPE_NORMAL); |
16853
e6bcccccbf7b
patch 8.1.1428: popup_atcursor() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16851
diff
changeset
|
2310 } |
e6bcccccbf7b
patch 8.1.1428: popup_atcursor() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16851
diff
changeset
|
2311 |
e6bcccccbf7b
patch 8.1.1428: popup_atcursor() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16851
diff
changeset
|
2312 /* |
e6bcccccbf7b
patch 8.1.1428: popup_atcursor() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16851
diff
changeset
|
2313 * popup_atcursor({text}, {options}) |
e6bcccccbf7b
patch 8.1.1428: popup_atcursor() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16851
diff
changeset
|
2314 */ |
e6bcccccbf7b
patch 8.1.1428: popup_atcursor() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16851
diff
changeset
|
2315 void |
e6bcccccbf7b
patch 8.1.1428: popup_atcursor() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16851
diff
changeset
|
2316 f_popup_atcursor(typval_T *argvars, typval_T *rettv) |
e6bcccccbf7b
patch 8.1.1428: popup_atcursor() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16851
diff
changeset
|
2317 { |
16908
df06694b761b
patch 8.1.1455: popup_atcursor() not completely implemented
Bram Moolenaar <Bram@vim.org>
parents:
16904
diff
changeset
|
2318 popup_create(argvars, rettv, TYPE_ATCURSOR); |
16853
e6bcccccbf7b
patch 8.1.1428: popup_atcursor() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16851
diff
changeset
|
2319 } |
e6bcccccbf7b
patch 8.1.1428: popup_atcursor() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16851
diff
changeset
|
2320 |
e6bcccccbf7b
patch 8.1.1428: popup_atcursor() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16851
diff
changeset
|
2321 /* |
17292
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2322 * popup_beval({text}, {options}) |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2323 */ |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2324 void |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2325 f_popup_beval(typval_T *argvars, typval_T *rettv) |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2326 { |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2327 popup_create(argvars, rettv, TYPE_BEVAL); |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2328 } |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2329 |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2330 /* |
16890
5131023c5728
patch 8.1.1446: popup window callback not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16888
diff
changeset
|
2331 * Invoke the close callback for window "wp" with value "result". |
5131023c5728
patch 8.1.1446: popup window callback not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16888
diff
changeset
|
2332 * Careful: The callback may make "wp" invalid! |
5131023c5728
patch 8.1.1446: popup window callback not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16888
diff
changeset
|
2333 */ |
5131023c5728
patch 8.1.1446: popup window callback not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16888
diff
changeset
|
2334 static void |
5131023c5728
patch 8.1.1446: popup window callback not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16888
diff
changeset
|
2335 invoke_popup_callback(win_T *wp, typval_T *result) |
5131023c5728
patch 8.1.1446: popup window callback not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16888
diff
changeset
|
2336 { |
5131023c5728
patch 8.1.1446: popup window callback not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16888
diff
changeset
|
2337 typval_T rettv; |
5131023c5728
patch 8.1.1446: popup window callback not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16888
diff
changeset
|
2338 typval_T argv[3]; |
5131023c5728
patch 8.1.1446: popup window callback not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16888
diff
changeset
|
2339 |
5131023c5728
patch 8.1.1446: popup window callback not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16888
diff
changeset
|
2340 argv[0].v_type = VAR_NUMBER; |
5131023c5728
patch 8.1.1446: popup window callback not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16888
diff
changeset
|
2341 argv[0].vval.v_number = (varnumber_T)wp->w_id; |
5131023c5728
patch 8.1.1446: popup window callback not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16888
diff
changeset
|
2342 |
5131023c5728
patch 8.1.1446: popup window callback not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16888
diff
changeset
|
2343 if (result != NULL && result->v_type != VAR_UNKNOWN) |
5131023c5728
patch 8.1.1446: popup window callback not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16888
diff
changeset
|
2344 copy_tv(result, &argv[1]); |
5131023c5728
patch 8.1.1446: popup window callback not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16888
diff
changeset
|
2345 else |
5131023c5728
patch 8.1.1446: popup window callback not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16888
diff
changeset
|
2346 { |
5131023c5728
patch 8.1.1446: popup window callback not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16888
diff
changeset
|
2347 argv[1].v_type = VAR_NUMBER; |
5131023c5728
patch 8.1.1446: popup window callback not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16888
diff
changeset
|
2348 argv[1].vval.v_number = 0; |
5131023c5728
patch 8.1.1446: popup window callback not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16888
diff
changeset
|
2349 } |
5131023c5728
patch 8.1.1446: popup window callback not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16888
diff
changeset
|
2350 |
5131023c5728
patch 8.1.1446: popup window callback not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16888
diff
changeset
|
2351 argv[2].v_type = VAR_UNKNOWN; |
5131023c5728
patch 8.1.1446: popup window callback not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16888
diff
changeset
|
2352 |
17606
ff097edaae89
patch 8.1.1800: function call functions have too many arguments
Bram Moolenaar <Bram@vim.org>
parents:
17604
diff
changeset
|
2353 call_callback(&wp->w_close_cb, -1, &rettv, 2, argv); |
16890
5131023c5728
patch 8.1.1446: popup window callback not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16888
diff
changeset
|
2354 if (result != NULL) |
5131023c5728
patch 8.1.1446: popup window callback not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16888
diff
changeset
|
2355 clear_tv(&argv[1]); |
5131023c5728
patch 8.1.1446: popup window callback not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16888
diff
changeset
|
2356 clear_tv(&rettv); |
5131023c5728
patch 8.1.1446: popup window callback not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16888
diff
changeset
|
2357 } |
5131023c5728
patch 8.1.1446: popup window callback not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16888
diff
changeset
|
2358 |
5131023c5728
patch 8.1.1446: popup window callback not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16888
diff
changeset
|
2359 /* |
20865
0e4cf74642a3
patch 8.2.0984: not using previous window when closing a shell popup window
Bram Moolenaar <Bram@vim.org>
parents:
20599
diff
changeset
|
2360 * Make "prevwin" the current window, unless it's equal to "wp". |
0e4cf74642a3
patch 8.2.0984: not using previous window when closing a shell popup window
Bram Moolenaar <Bram@vim.org>
parents:
20599
diff
changeset
|
2361 * Otherwise make "firstwin" the current window. |
0e4cf74642a3
patch 8.2.0984: not using previous window when closing a shell popup window
Bram Moolenaar <Bram@vim.org>
parents:
20599
diff
changeset
|
2362 */ |
0e4cf74642a3
patch 8.2.0984: not using previous window when closing a shell popup window
Bram Moolenaar <Bram@vim.org>
parents:
20599
diff
changeset
|
2363 static void |
0e4cf74642a3
patch 8.2.0984: not using previous window when closing a shell popup window
Bram Moolenaar <Bram@vim.org>
parents:
20599
diff
changeset
|
2364 back_to_prevwin(win_T *wp) |
0e4cf74642a3
patch 8.2.0984: not using previous window when closing a shell popup window
Bram Moolenaar <Bram@vim.org>
parents:
20599
diff
changeset
|
2365 { |
0e4cf74642a3
patch 8.2.0984: not using previous window when closing a shell popup window
Bram Moolenaar <Bram@vim.org>
parents:
20599
diff
changeset
|
2366 if (win_valid(prevwin) && wp != prevwin) |
0e4cf74642a3
patch 8.2.0984: not using previous window when closing a shell popup window
Bram Moolenaar <Bram@vim.org>
parents:
20599
diff
changeset
|
2367 win_enter(prevwin, FALSE); |
0e4cf74642a3
patch 8.2.0984: not using previous window when closing a shell popup window
Bram Moolenaar <Bram@vim.org>
parents:
20599
diff
changeset
|
2368 else |
0e4cf74642a3
patch 8.2.0984: not using previous window when closing a shell popup window
Bram Moolenaar <Bram@vim.org>
parents:
20599
diff
changeset
|
2369 win_enter(firstwin, FALSE); |
0e4cf74642a3
patch 8.2.0984: not using previous window when closing a shell popup window
Bram Moolenaar <Bram@vim.org>
parents:
20599
diff
changeset
|
2370 } |
0e4cf74642a3
patch 8.2.0984: not using previous window when closing a shell popup window
Bram Moolenaar <Bram@vim.org>
parents:
20599
diff
changeset
|
2371 |
0e4cf74642a3
patch 8.2.0984: not using previous window when closing a shell popup window
Bram Moolenaar <Bram@vim.org>
parents:
20599
diff
changeset
|
2372 /* |
16904
9138e2c60bf1
patch 8.1.1453: popup window "moved" property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16902
diff
changeset
|
2373 * Close popup "wp" and invoke any close callback for it. |
9138e2c60bf1
patch 8.1.1453: popup window "moved" property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16902
diff
changeset
|
2374 */ |
9138e2c60bf1
patch 8.1.1453: popup window "moved" property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16902
diff
changeset
|
2375 static void |
9138e2c60bf1
patch 8.1.1453: popup window "moved" property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16902
diff
changeset
|
2376 popup_close_and_callback(win_T *wp, typval_T *arg) |
9138e2c60bf1
patch 8.1.1453: popup window "moved" property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16902
diff
changeset
|
2377 { |
9138e2c60bf1
patch 8.1.1453: popup window "moved" property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16902
diff
changeset
|
2378 int id = wp->w_id; |
9138e2c60bf1
patch 8.1.1453: popup window "moved" property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16902
diff
changeset
|
2379 |
19267
c7903f92ed75
patch 8.2.0192: build failure without +terminal feature
Bram Moolenaar <Bram@vim.org>
parents:
19265
diff
changeset
|
2380 #ifdef FEAT_TERMINAL |
19265
ce8c47ed54e5
patch 8.2.0191: cannot put a terminal in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
19241
diff
changeset
|
2381 if (wp == curwin && curbuf->b_term != NULL) |
ce8c47ed54e5
patch 8.2.0191: cannot put a terminal in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
19241
diff
changeset
|
2382 { |
19540
9f07a6c172f2
patch 8.2.0327: crash when opening and closing two popup terminal windows
Bram Moolenaar <Bram@vim.org>
parents:
19457
diff
changeset
|
2383 win_T *owp; |
9f07a6c172f2
patch 8.2.0327: crash when opening and closing two popup terminal windows
Bram Moolenaar <Bram@vim.org>
parents:
19457
diff
changeset
|
2384 |
9f07a6c172f2
patch 8.2.0327: crash when opening and closing two popup terminal windows
Bram Moolenaar <Bram@vim.org>
parents:
19457
diff
changeset
|
2385 // Closing popup window with a terminal: put focus back on the first |
9f07a6c172f2
patch 8.2.0327: crash when opening and closing two popup terminal windows
Bram Moolenaar <Bram@vim.org>
parents:
19457
diff
changeset
|
2386 // that works: |
9f07a6c172f2
patch 8.2.0327: crash when opening and closing two popup terminal windows
Bram Moolenaar <Bram@vim.org>
parents:
19457
diff
changeset
|
2387 // - another popup window with a terminal |
9f07a6c172f2
patch 8.2.0327: crash when opening and closing two popup terminal windows
Bram Moolenaar <Bram@vim.org>
parents:
19457
diff
changeset
|
2388 // - the previous window |
9f07a6c172f2
patch 8.2.0327: crash when opening and closing two popup terminal windows
Bram Moolenaar <Bram@vim.org>
parents:
19457
diff
changeset
|
2389 // - the first one. |
19934
3ff714d765ba
patch 8.2.0523: loops are repeated
Bram Moolenaar <Bram@vim.org>
parents:
19908
diff
changeset
|
2390 FOR_ALL_POPUPWINS(owp) |
19540
9f07a6c172f2
patch 8.2.0327: crash when opening and closing two popup terminal windows
Bram Moolenaar <Bram@vim.org>
parents:
19457
diff
changeset
|
2391 if (owp != curwin && owp->w_buffer->b_term != NULL) |
9f07a6c172f2
patch 8.2.0327: crash when opening and closing two popup terminal windows
Bram Moolenaar <Bram@vim.org>
parents:
19457
diff
changeset
|
2392 break; |
9f07a6c172f2
patch 8.2.0327: crash when opening and closing two popup terminal windows
Bram Moolenaar <Bram@vim.org>
parents:
19457
diff
changeset
|
2393 if (owp != NULL) |
9f07a6c172f2
patch 8.2.0327: crash when opening and closing two popup terminal windows
Bram Moolenaar <Bram@vim.org>
parents:
19457
diff
changeset
|
2394 win_enter(owp, FALSE); |
9f07a6c172f2
patch 8.2.0327: crash when opening and closing two popup terminal windows
Bram Moolenaar <Bram@vim.org>
parents:
19457
diff
changeset
|
2395 else |
9f07a6c172f2
patch 8.2.0327: crash when opening and closing two popup terminal windows
Bram Moolenaar <Bram@vim.org>
parents:
19457
diff
changeset
|
2396 { |
9f07a6c172f2
patch 8.2.0327: crash when opening and closing two popup terminal windows
Bram Moolenaar <Bram@vim.org>
parents:
19457
diff
changeset
|
2397 for (owp = curtab->tp_first_popupwin; owp != NULL; |
9f07a6c172f2
patch 8.2.0327: crash when opening and closing two popup terminal windows
Bram Moolenaar <Bram@vim.org>
parents:
19457
diff
changeset
|
2398 owp = owp->w_next) |
9f07a6c172f2
patch 8.2.0327: crash when opening and closing two popup terminal windows
Bram Moolenaar <Bram@vim.org>
parents:
19457
diff
changeset
|
2399 if (owp != curwin && owp->w_buffer->b_term != NULL) |
9f07a6c172f2
patch 8.2.0327: crash when opening and closing two popup terminal windows
Bram Moolenaar <Bram@vim.org>
parents:
19457
diff
changeset
|
2400 break; |
9f07a6c172f2
patch 8.2.0327: crash when opening and closing two popup terminal windows
Bram Moolenaar <Bram@vim.org>
parents:
19457
diff
changeset
|
2401 if (owp != NULL) |
9f07a6c172f2
patch 8.2.0327: crash when opening and closing two popup terminal windows
Bram Moolenaar <Bram@vim.org>
parents:
19457
diff
changeset
|
2402 win_enter(owp, FALSE); |
9f07a6c172f2
patch 8.2.0327: crash when opening and closing two popup terminal windows
Bram Moolenaar <Bram@vim.org>
parents:
19457
diff
changeset
|
2403 else |
20865
0e4cf74642a3
patch 8.2.0984: not using previous window when closing a shell popup window
Bram Moolenaar <Bram@vim.org>
parents:
20599
diff
changeset
|
2404 back_to_prevwin(wp); |
19540
9f07a6c172f2
patch 8.2.0327: crash when opening and closing two popup terminal windows
Bram Moolenaar <Bram@vim.org>
parents:
19457
diff
changeset
|
2405 } |
19265
ce8c47ed54e5
patch 8.2.0191: cannot put a terminal in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
19241
diff
changeset
|
2406 } |
19267
c7903f92ed75
patch 8.2.0192: build failure without +terminal feature
Bram Moolenaar <Bram@vim.org>
parents:
19265
diff
changeset
|
2407 #endif |
19265
ce8c47ed54e5
patch 8.2.0191: cannot put a terminal in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
19241
diff
changeset
|
2408 |
18868
5fbb167591fc
patch 8.1.2420: crash when calling popup_close() in win_execute()
Bram Moolenaar <Bram@vim.org>
parents:
18767
diff
changeset
|
2409 // Just in case a check higher up is missing. |
5fbb167591fc
patch 8.1.2420: crash when calling popup_close() in win_execute()
Bram Moolenaar <Bram@vim.org>
parents:
18767
diff
changeset
|
2410 if (wp == curwin && ERROR_IF_POPUP_WINDOW) |
22367
997bbc35c181
patch 8.2.1732: stuck when win_execute() for a popup causes an error
Bram Moolenaar <Bram@vim.org>
parents:
22357
diff
changeset
|
2411 { |
997bbc35c181
patch 8.2.1732: stuck when win_execute() for a popup causes an error
Bram Moolenaar <Bram@vim.org>
parents:
22357
diff
changeset
|
2412 // To avoid getting stuck when win_execute() does something that causes |
997bbc35c181
patch 8.2.1732: stuck when win_execute() for a popup causes an error
Bram Moolenaar <Bram@vim.org>
parents:
22357
diff
changeset
|
2413 // an error, stop calling the filter callback. |
997bbc35c181
patch 8.2.1732: stuck when win_execute() for a popup causes an error
Bram Moolenaar <Bram@vim.org>
parents:
22357
diff
changeset
|
2414 free_callback(&wp->w_filter_cb); |
997bbc35c181
patch 8.2.1732: stuck when win_execute() for a popup causes an error
Bram Moolenaar <Bram@vim.org>
parents:
22357
diff
changeset
|
2415 |
18868
5fbb167591fc
patch 8.1.2420: crash when calling popup_close() in win_execute()
Bram Moolenaar <Bram@vim.org>
parents:
18767
diff
changeset
|
2416 return; |
22367
997bbc35c181
patch 8.2.1732: stuck when win_execute() for a popup causes an error
Bram Moolenaar <Bram@vim.org>
parents:
22357
diff
changeset
|
2417 } |
18868
5fbb167591fc
patch 8.1.2420: crash when calling popup_close() in win_execute()
Bram Moolenaar <Bram@vim.org>
parents:
18767
diff
changeset
|
2418 |
19629
804322d6c6ba
patch 8.2.0371: crash with combination of terminal popup and autocmd
Bram Moolenaar <Bram@vim.org>
parents:
19605
diff
changeset
|
2419 CHECK_CURBUF; |
16904
9138e2c60bf1
patch 8.1.1453: popup window "moved" property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16902
diff
changeset
|
2420 if (wp->w_close_cb.cb_name != NULL) |
9138e2c60bf1
patch 8.1.1453: popup window "moved" property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16902
diff
changeset
|
2421 // Careful: This may make "wp" invalid. |
9138e2c60bf1
patch 8.1.1453: popup window "moved" property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16902
diff
changeset
|
2422 invoke_popup_callback(wp, arg); |
9138e2c60bf1
patch 8.1.1453: popup window "moved" property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16902
diff
changeset
|
2423 |
20384
42ab4d40e78f
patch 8.2.0747: cannot forcefully close all popups
Bram Moolenaar <Bram@vim.org>
parents:
20382
diff
changeset
|
2424 popup_close(id, FALSE); |
19629
804322d6c6ba
patch 8.2.0371: crash with combination of terminal popup and autocmd
Bram Moolenaar <Bram@vim.org>
parents:
19605
diff
changeset
|
2425 CHECK_CURBUF; |
16904
9138e2c60bf1
patch 8.1.1453: popup window "moved" property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16902
diff
changeset
|
2426 } |
9138e2c60bf1
patch 8.1.1453: popup window "moved" property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16902
diff
changeset
|
2427 |
19265
ce8c47ed54e5
patch 8.2.0191: cannot put a terminal in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
19241
diff
changeset
|
2428 void |
17863
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
2429 popup_close_with_retval(win_T *wp, int retval) |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
2430 { |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
2431 typval_T res; |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
2432 |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
2433 res.v_type = VAR_NUMBER; |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
2434 res.vval.v_number = retval; |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
2435 popup_close_and_callback(wp, &res); |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
2436 } |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
2437 |
16904
9138e2c60bf1
patch 8.1.1453: popup window "moved" property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16902
diff
changeset
|
2438 /* |
17219
5169811b3044
patch 8.1.1609: the user cannot easily close a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17216
diff
changeset
|
2439 * Close popup "wp" because of a mouse click. |
5169811b3044
patch 8.1.1609: the user cannot easily close a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17216
diff
changeset
|
2440 */ |
5169811b3044
patch 8.1.1609: the user cannot easily close a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17216
diff
changeset
|
2441 void |
5169811b3044
patch 8.1.1609: the user cannot easily close a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17216
diff
changeset
|
2442 popup_close_for_mouse_click(win_T *wp) |
5169811b3044
patch 8.1.1609: the user cannot easily close a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17216
diff
changeset
|
2443 { |
17863
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
2444 popup_close_with_retval(wp, -2); |
17219
5169811b3044
patch 8.1.1609: the user cannot easily close a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17216
diff
changeset
|
2445 } |
5169811b3044
patch 8.1.1609: the user cannot easily close a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17216
diff
changeset
|
2446 |
17292
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2447 static void |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2448 check_mouse_moved(win_T *wp, win_T *mouse_wp) |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2449 { |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2450 // Close the popup when all if these are true: |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2451 // - the mouse is not on this popup |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2452 // - "mousemoved" was used |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2453 // - the mouse is no longer on the same screen row or the mouse column is |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2454 // outside of the relevant text |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2455 if (wp != mouse_wp |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2456 && wp->w_popup_mouse_row != 0 |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2457 && (wp->w_popup_mouse_row != mouse_row |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2458 || mouse_col < wp->w_popup_mouse_mincol |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2459 || mouse_col > wp->w_popup_mouse_maxcol)) |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2460 { |
17300
0dff534a0807
patch 8.1.1649: Illegal memory access when closing popup window
Bram Moolenaar <Bram@vim.org>
parents:
17292
diff
changeset
|
2461 // Careful: this makes "wp" invalid. |
17863
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
2462 popup_close_with_retval(wp, -2); |
17292
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2463 } |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2464 } |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2465 |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2466 /* |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2467 * Called when the mouse moved: may close a popup with "mousemoved". |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2468 */ |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2469 void |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2470 popup_handle_mouse_moved(void) |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2471 { |
17300
0dff534a0807
patch 8.1.1649: Illegal memory access when closing popup window
Bram Moolenaar <Bram@vim.org>
parents:
17292
diff
changeset
|
2472 win_T *wp, *nextwp; |
17292
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2473 win_T *mouse_wp; |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2474 int row = mouse_row; |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2475 int col = mouse_col; |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2476 |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2477 // find the window where the mouse is in |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2478 mouse_wp = mouse_find_win(&row, &col, FIND_POPUP); |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2479 |
17300
0dff534a0807
patch 8.1.1649: Illegal memory access when closing popup window
Bram Moolenaar <Bram@vim.org>
parents:
17292
diff
changeset
|
2480 for (wp = first_popupwin; wp != NULL; wp = nextwp) |
0dff534a0807
patch 8.1.1649: Illegal memory access when closing popup window
Bram Moolenaar <Bram@vim.org>
parents:
17292
diff
changeset
|
2481 { |
0dff534a0807
patch 8.1.1649: Illegal memory access when closing popup window
Bram Moolenaar <Bram@vim.org>
parents:
17292
diff
changeset
|
2482 nextwp = wp->w_next; |
17292
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2483 check_mouse_moved(wp, mouse_wp); |
17300
0dff534a0807
patch 8.1.1649: Illegal memory access when closing popup window
Bram Moolenaar <Bram@vim.org>
parents:
17292
diff
changeset
|
2484 } |
0dff534a0807
patch 8.1.1649: Illegal memory access when closing popup window
Bram Moolenaar <Bram@vim.org>
parents:
17292
diff
changeset
|
2485 for (wp = curtab->tp_first_popupwin; wp != NULL; wp = nextwp) |
0dff534a0807
patch 8.1.1649: Illegal memory access when closing popup window
Bram Moolenaar <Bram@vim.org>
parents:
17292
diff
changeset
|
2486 { |
0dff534a0807
patch 8.1.1649: Illegal memory access when closing popup window
Bram Moolenaar <Bram@vim.org>
parents:
17292
diff
changeset
|
2487 nextwp = wp->w_next; |
17292
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2488 check_mouse_moved(wp, mouse_wp); |
17300
0dff534a0807
patch 8.1.1649: Illegal memory access when closing popup window
Bram Moolenaar <Bram@vim.org>
parents:
17292
diff
changeset
|
2489 } |
17292
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2490 } |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
2491 |
17219
5169811b3044
patch 8.1.1609: the user cannot easily close a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17216
diff
changeset
|
2492 /* |
17117
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2493 * In a filter: check if the typed key is a mouse event that is used for |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2494 * dragging the popup. |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2495 */ |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2496 static void |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2497 filter_handle_drag(win_T *wp, int c, typval_T *rettv) |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2498 { |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2499 int row = mouse_row; |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2500 int col = mouse_col; |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2501 |
26332
8b7f01b39d79
patch 8.2.3697: cannot drag a popup without a border
Bram Moolenaar <Bram@vim.org>
parents:
26266
diff
changeset
|
2502 if ((wp->w_popup_flags & (POPF_DRAG | POPF_DRAGALL)) |
17117
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2503 && is_mouse_key(c) |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2504 && (wp == popup_dragwin |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2505 || wp == mouse_find_win(&row, &col, FIND_POPUP))) |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2506 // do not consume the key, allow for dragging the popup |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2507 rettv->vval.v_number = 0; |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2508 } |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2509 |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2510 /* |
20384
42ab4d40e78f
patch 8.2.0747: cannot forcefully close all popups
Bram Moolenaar <Bram@vim.org>
parents:
20382
diff
changeset
|
2511 * popup_filter_menu({id}, {key}) |
17117
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2512 */ |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2513 void |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2514 f_popup_filter_menu(typval_T *argvars, typval_T *rettv) |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2515 { |
25252
acda780ffc3e
patch 8.2.3162: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25064
diff
changeset
|
2516 int id; |
acda780ffc3e
patch 8.2.3162: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25064
diff
changeset
|
2517 win_T *wp; |
acda780ffc3e
patch 8.2.3162: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25064
diff
changeset
|
2518 char_u *key; |
17117
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2519 typval_T res; |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2520 int c; |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2521 linenr_T old_lnum; |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2522 |
25252
acda780ffc3e
patch 8.2.3162: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25064
diff
changeset
|
2523 if (in_vim9script() |
acda780ffc3e
patch 8.2.3162: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25064
diff
changeset
|
2524 && (check_for_number_arg(argvars, 0) == FAIL |
acda780ffc3e
patch 8.2.3162: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25064
diff
changeset
|
2525 || check_for_string_arg(argvars, 1) == FAIL)) |
acda780ffc3e
patch 8.2.3162: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25064
diff
changeset
|
2526 return; |
acda780ffc3e
patch 8.2.3162: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25064
diff
changeset
|
2527 |
acda780ffc3e
patch 8.2.3162: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25064
diff
changeset
|
2528 id = tv_get_number(&argvars[0]); |
acda780ffc3e
patch 8.2.3162: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25064
diff
changeset
|
2529 wp = win_id2wp(id); |
acda780ffc3e
patch 8.2.3162: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25064
diff
changeset
|
2530 key = tv_get_string(&argvars[1]); |
17117
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2531 // If the popup has been closed do not consume the key. |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2532 if (wp == NULL) |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2533 return; |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2534 |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2535 c = *key; |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2536 if (c == K_SPECIAL && key[1] != NUL) |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2537 c = TO_SPECIAL(key[1], key[2]); |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2538 |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2539 // consume all keys until done |
22620
b5d68d8a5187
patch 8.2.1858: Vim9: filter functions return number instead of bool
Bram Moolenaar <Bram@vim.org>
parents:
22600
diff
changeset
|
2540 rettv->v_type = VAR_BOOL; |
b5d68d8a5187
patch 8.2.1858: Vim9: filter functions return number instead of bool
Bram Moolenaar <Bram@vim.org>
parents:
22600
diff
changeset
|
2541 rettv->vval.v_number = VVAL_TRUE; |
17117
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2542 res.v_type = VAR_NUMBER; |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2543 |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2544 old_lnum = wp->w_cursor.lnum; |
23507
88a7e3bbb594
patch 8.2.2296: cannot use CTRL-N and CTRL-P in a popup menu
Bram Moolenaar <Bram@vim.org>
parents:
23400
diff
changeset
|
2545 if ((c == 'k' || c == 'K' || c == K_UP || c == Ctrl_P) |
88a7e3bbb594
patch 8.2.2296: cannot use CTRL-N and CTRL-P in a popup menu
Bram Moolenaar <Bram@vim.org>
parents:
23400
diff
changeset
|
2546 && wp->w_cursor.lnum > 1) |
17117
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2547 --wp->w_cursor.lnum; |
23507
88a7e3bbb594
patch 8.2.2296: cannot use CTRL-N and CTRL-P in a popup menu
Bram Moolenaar <Bram@vim.org>
parents:
23400
diff
changeset
|
2548 if ((c == 'j' || c == 'J' || c == K_DOWN || c == Ctrl_N) |
17117
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2549 && wp->w_cursor.lnum < wp->w_buffer->b_ml.ml_line_count) |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2550 ++wp->w_cursor.lnum; |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2551 if (old_lnum != wp->w_cursor.lnum) |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2552 { |
17440
a5874fdc8f3a
patch 8.1.1718: popup menu highlighting does not look good
Bram Moolenaar <Bram@vim.org>
parents:
17431
diff
changeset
|
2553 // caller will call popup_highlight_curline() |
17117
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2554 return; |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2555 } |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2556 |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2557 if (c == 'x' || c == 'X' || c == ESC || c == Ctrl_C) |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2558 { |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2559 // Cancelled, invoke callback with -1 |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2560 res.vval.v_number = -1; |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2561 popup_close_and_callback(wp, &res); |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2562 return; |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2563 } |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2564 if (c == ' ' || c == K_KENTER || c == CAR || c == NL) |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2565 { |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2566 // Invoke callback with current index. |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2567 res.vval.v_number = wp->w_cursor.lnum; |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2568 popup_close_and_callback(wp, &res); |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2569 return; |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2570 } |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2571 |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2572 filter_handle_drag(wp, c, rettv); |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2573 } |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2574 |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2575 /* |
20384
42ab4d40e78f
patch 8.2.0747: cannot forcefully close all popups
Bram Moolenaar <Bram@vim.org>
parents:
20382
diff
changeset
|
2576 * popup_filter_yesno({id}, {key}) |
17097
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2577 */ |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2578 void |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2579 f_popup_filter_yesno(typval_T *argvars, typval_T *rettv) |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2580 { |
25252
acda780ffc3e
patch 8.2.3162: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25064
diff
changeset
|
2581 int id; |
acda780ffc3e
patch 8.2.3162: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25064
diff
changeset
|
2582 win_T *wp; |
acda780ffc3e
patch 8.2.3162: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25064
diff
changeset
|
2583 char_u *key; |
17097
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2584 typval_T res; |
17117
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2585 int c; |
17097
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2586 |
25252
acda780ffc3e
patch 8.2.3162: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25064
diff
changeset
|
2587 if (in_vim9script() |
acda780ffc3e
patch 8.2.3162: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25064
diff
changeset
|
2588 && (check_for_number_arg(argvars, 0) == FAIL |
acda780ffc3e
patch 8.2.3162: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25064
diff
changeset
|
2589 || check_for_string_arg(argvars, 1) == FAIL)) |
acda780ffc3e
patch 8.2.3162: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25064
diff
changeset
|
2590 return; |
acda780ffc3e
patch 8.2.3162: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25064
diff
changeset
|
2591 |
acda780ffc3e
patch 8.2.3162: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25064
diff
changeset
|
2592 id = tv_get_number(&argvars[0]); |
acda780ffc3e
patch 8.2.3162: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25064
diff
changeset
|
2593 wp = win_id2wp(id); |
acda780ffc3e
patch 8.2.3162: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25064
diff
changeset
|
2594 key = tv_get_string(&argvars[1]); |
17097
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2595 // If the popup has been closed don't consume the key. |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2596 if (wp == NULL) |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2597 return; |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2598 |
17117
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2599 c = *key; |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2600 if (c == K_SPECIAL && key[1] != NUL) |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2601 c = TO_SPECIAL(key[1], key[2]); |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2602 |
17097
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2603 // consume all keys until done |
22620
b5d68d8a5187
patch 8.2.1858: Vim9: filter functions return number instead of bool
Bram Moolenaar <Bram@vim.org>
parents:
22600
diff
changeset
|
2604 rettv->v_type = VAR_BOOL; |
b5d68d8a5187
patch 8.2.1858: Vim9: filter functions return number instead of bool
Bram Moolenaar <Bram@vim.org>
parents:
22600
diff
changeset
|
2605 rettv->vval.v_number = VVAL_TRUE; |
17097
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2606 |
17117
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2607 if (c == 'y' || c == 'Y') |
17097
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2608 res.vval.v_number = 1; |
17117
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2609 else if (c == 'n' || c == 'N' || c == 'x' || c == 'X' || c == ESC) |
17097
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2610 res.vval.v_number = 0; |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2611 else |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2612 { |
17117
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2613 filter_handle_drag(wp, c, rettv); |
17097
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2614 return; |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2615 } |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2616 |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2617 // Invoke callback |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2618 res.v_type = VAR_NUMBER; |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2619 popup_close_and_callback(wp, &res); |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2620 } |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2621 |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2622 /* |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2623 * popup_dialog({text}, {options}) |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2624 */ |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2625 void |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2626 f_popup_dialog(typval_T *argvars, typval_T *rettv) |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2627 { |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2628 popup_create(argvars, rettv, TYPE_DIALOG); |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2629 } |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2630 |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2631 /* |
17117
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2632 * popup_menu({text}, {options}) |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2633 */ |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2634 void |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2635 f_popup_menu(typval_T *argvars, typval_T *rettv) |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2636 { |
17429
6e756ad5ef1a
patch 8.1.1713: highlighting cursor line only works with popup_menu()
Bram Moolenaar <Bram@vim.org>
parents:
17421
diff
changeset
|
2637 popup_create(argvars, rettv, TYPE_MENU); |
17117
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2638 } |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2639 |
7ef5283ace3c
patch 8.1.1558: popup_menu() and popup_filter_menu() are not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17111
diff
changeset
|
2640 /* |
17097
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2641 * popup_notification({text}, {options}) |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2642 */ |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2643 void |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2644 f_popup_notification(typval_T *argvars, typval_T *rettv) |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2645 { |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2646 popup_create(argvars, rettv, TYPE_NOTIFICATION); |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2647 } |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2648 |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2649 /* |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2650 * Find the popup window with window-ID "id". |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2651 * If the popup window does not exist NULL is returned. |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2652 * If the window is not a popup window, and error message is given. |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2653 */ |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2654 static win_T * |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2655 find_popup_win(int id) |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2656 { |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2657 win_T *wp = win_id2wp(id); |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2658 |
17225
09fa437d33d8
patch 8.1.1612: cannot show an existing buffer in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17219
diff
changeset
|
2659 if (wp != NULL && !WIN_IS_POPUP(wp)) |
17097
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2660 { |
26986
79ea140936e9
patch 8.2.4022: two error messages in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
26962
diff
changeset
|
2661 semsg(_(e_window_nr_is_not_popup_window), id); |
17097
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2662 return NULL; |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2663 } |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2664 return wp; |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2665 } |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2666 |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
2667 /* |
16778
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2668 * popup_close({id}) |
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2669 */ |
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2670 void |
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2671 f_popup_close(typval_T *argvars, typval_T *rettv UNUSED) |
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2672 { |
25368
1ffa8eb30353
patch 8.2.3221: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25338
diff
changeset
|
2673 int id; |
18868
5fbb167591fc
patch 8.1.2420: crash when calling popup_close() in win_execute()
Bram Moolenaar <Bram@vim.org>
parents:
18767
diff
changeset
|
2674 win_T *wp; |
5fbb167591fc
patch 8.1.2420: crash when calling popup_close() in win_execute()
Bram Moolenaar <Bram@vim.org>
parents:
18767
diff
changeset
|
2675 |
25368
1ffa8eb30353
patch 8.2.3221: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25338
diff
changeset
|
2676 if (in_vim9script() && check_for_number_arg(argvars, 0) == FAIL) |
1ffa8eb30353
patch 8.2.3221: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25338
diff
changeset
|
2677 return; |
1ffa8eb30353
patch 8.2.3221: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25338
diff
changeset
|
2678 |
1ffa8eb30353
patch 8.2.3221: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25338
diff
changeset
|
2679 id = (int)tv_get_number(argvars); |
19457
b70fbf3f0e0b
patch 8.2.0286: cannot use popup_close() for a terminal popup
Bram Moolenaar <Bram@vim.org>
parents:
19312
diff
changeset
|
2680 if ( |
b70fbf3f0e0b
patch 8.2.0286: cannot use popup_close() for a terminal popup
Bram Moolenaar <Bram@vim.org>
parents:
19312
diff
changeset
|
2681 # ifdef FEAT_TERMINAL |
b70fbf3f0e0b
patch 8.2.0286: cannot use popup_close() for a terminal popup
Bram Moolenaar <Bram@vim.org>
parents:
19312
diff
changeset
|
2682 // if the popup contains a terminal it will become hidden |
b70fbf3f0e0b
patch 8.2.0286: cannot use popup_close() for a terminal popup
Bram Moolenaar <Bram@vim.org>
parents:
19312
diff
changeset
|
2683 curbuf->b_term == NULL && |
b70fbf3f0e0b
patch 8.2.0286: cannot use popup_close() for a terminal popup
Bram Moolenaar <Bram@vim.org>
parents:
19312
diff
changeset
|
2684 # endif |
b70fbf3f0e0b
patch 8.2.0286: cannot use popup_close() for a terminal popup
Bram Moolenaar <Bram@vim.org>
parents:
19312
diff
changeset
|
2685 ERROR_IF_ANY_POPUP_WINDOW) |
18868
5fbb167591fc
patch 8.1.2420: crash when calling popup_close() in win_execute()
Bram Moolenaar <Bram@vim.org>
parents:
18767
diff
changeset
|
2686 return; |
5fbb167591fc
patch 8.1.2420: crash when calling popup_close() in win_execute()
Bram Moolenaar <Bram@vim.org>
parents:
18767
diff
changeset
|
2687 |
5fbb167591fc
patch 8.1.2420: crash when calling popup_close() in win_execute()
Bram Moolenaar <Bram@vim.org>
parents:
18767
diff
changeset
|
2688 wp = find_popup_win(id); |
16890
5131023c5728
patch 8.1.1446: popup window callback not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16888
diff
changeset
|
2689 if (wp != NULL) |
16904
9138e2c60bf1
patch 8.1.1453: popup window "moved" property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16902
diff
changeset
|
2690 popup_close_and_callback(wp, &argvars[1]); |
16809
5ff14f96f1c9
patch 8.1.1406: popup_hide() and popup_show() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16806
diff
changeset
|
2691 } |
5ff14f96f1c9
patch 8.1.1406: popup_hide() and popup_show() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16806
diff
changeset
|
2692 |
18396
ba5d8c5d77d7
patch 8.1.2192: cannot easily fill the info popup asynchronously
Bram Moolenaar <Bram@vim.org>
parents:
18339
diff
changeset
|
2693 void |
17817
e8a7029efa40
patch 8.1.1905: cannot set all properties of the info popup
Bram Moolenaar <Bram@vim.org>
parents:
17815
diff
changeset
|
2694 popup_hide(win_T *wp) |
e8a7029efa40
patch 8.1.1905: cannot set all properties of the info popup
Bram Moolenaar <Bram@vim.org>
parents:
17815
diff
changeset
|
2695 { |
19312
18fc30542bf5
patch 8.2.0214: a popup window with a terminal can be made hidden
Bram Moolenaar <Bram@vim.org>
parents:
19293
diff
changeset
|
2696 #ifdef FEAT_TERMINAL |
18fc30542bf5
patch 8.2.0214: a popup window with a terminal can be made hidden
Bram Moolenaar <Bram@vim.org>
parents:
19293
diff
changeset
|
2697 if (error_if_term_popup_window()) |
18fc30542bf5
patch 8.2.0214: a popup window with a terminal can be made hidden
Bram Moolenaar <Bram@vim.org>
parents:
19293
diff
changeset
|
2698 return; |
18fc30542bf5
patch 8.2.0214: a popup window with a terminal can be made hidden
Bram Moolenaar <Bram@vim.org>
parents:
19293
diff
changeset
|
2699 #endif |
17817
e8a7029efa40
patch 8.1.1905: cannot set all properties of the info popup
Bram Moolenaar <Bram@vim.org>
parents:
17815
diff
changeset
|
2700 if ((wp->w_popup_flags & POPF_HIDDEN) == 0) |
e8a7029efa40
patch 8.1.1905: cannot set all properties of the info popup
Bram Moolenaar <Bram@vim.org>
parents:
17815
diff
changeset
|
2701 { |
e8a7029efa40
patch 8.1.1905: cannot set all properties of the info popup
Bram Moolenaar <Bram@vim.org>
parents:
17815
diff
changeset
|
2702 wp->w_popup_flags |= POPF_HIDDEN; |
19117
8db080710015
patch 8.2.0118: crash when cycling to buffers involving popup window
Bram Moolenaar <Bram@vim.org>
parents:
19071
diff
changeset
|
2703 // Do not decrement b_nwindows, we still reference the buffer. |
29732
89e1d67814a9
patch 9.0.0206: redraw flags are not named specifically
Bram Moolenaar <Bram@vim.org>
parents:
29660
diff
changeset
|
2704 redraw_all_later(UPD_NOT_VALID); |
17817
e8a7029efa40
patch 8.1.1905: cannot set all properties of the info popup
Bram Moolenaar <Bram@vim.org>
parents:
17815
diff
changeset
|
2705 popup_mask_refresh = TRUE; |
e8a7029efa40
patch 8.1.1905: cannot set all properties of the info popup
Bram Moolenaar <Bram@vim.org>
parents:
17815
diff
changeset
|
2706 } |
e8a7029efa40
patch 8.1.1905: cannot set all properties of the info popup
Bram Moolenaar <Bram@vim.org>
parents:
17815
diff
changeset
|
2707 } |
e8a7029efa40
patch 8.1.1905: cannot set all properties of the info popup
Bram Moolenaar <Bram@vim.org>
parents:
17815
diff
changeset
|
2708 |
16809
5ff14f96f1c9
patch 8.1.1406: popup_hide() and popup_show() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16806
diff
changeset
|
2709 /* |
5ff14f96f1c9
patch 8.1.1406: popup_hide() and popup_show() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16806
diff
changeset
|
2710 * popup_hide({id}) |
5ff14f96f1c9
patch 8.1.1406: popup_hide() and popup_show() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16806
diff
changeset
|
2711 */ |
5ff14f96f1c9
patch 8.1.1406: popup_hide() and popup_show() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16806
diff
changeset
|
2712 void |
5ff14f96f1c9
patch 8.1.1406: popup_hide() and popup_show() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16806
diff
changeset
|
2713 f_popup_hide(typval_T *argvars, typval_T *rettv UNUSED) |
5ff14f96f1c9
patch 8.1.1406: popup_hide() and popup_show() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16806
diff
changeset
|
2714 { |
25384
e8e2c4d33b9b
patch 8.2.3229: Vim9: runtime and compile time type checks are not the same
Bram Moolenaar <Bram@vim.org>
parents:
25368
diff
changeset
|
2715 int id; |
e8e2c4d33b9b
patch 8.2.3229: Vim9: runtime and compile time type checks are not the same
Bram Moolenaar <Bram@vim.org>
parents:
25368
diff
changeset
|
2716 win_T *wp; |
e8e2c4d33b9b
patch 8.2.3229: Vim9: runtime and compile time type checks are not the same
Bram Moolenaar <Bram@vim.org>
parents:
25368
diff
changeset
|
2717 |
e8e2c4d33b9b
patch 8.2.3229: Vim9: runtime and compile time type checks are not the same
Bram Moolenaar <Bram@vim.org>
parents:
25368
diff
changeset
|
2718 if (in_vim9script() && check_for_number_arg(argvars, 0) == FAIL) |
e8e2c4d33b9b
patch 8.2.3229: Vim9: runtime and compile time type checks are not the same
Bram Moolenaar <Bram@vim.org>
parents:
25368
diff
changeset
|
2719 return; |
e8e2c4d33b9b
patch 8.2.3229: Vim9: runtime and compile time type checks are not the same
Bram Moolenaar <Bram@vim.org>
parents:
25368
diff
changeset
|
2720 |
e8e2c4d33b9b
patch 8.2.3229: Vim9: runtime and compile time type checks are not the same
Bram Moolenaar <Bram@vim.org>
parents:
25368
diff
changeset
|
2721 id = (int)tv_get_number(argvars); |
e8e2c4d33b9b
patch 8.2.3229: Vim9: runtime and compile time type checks are not the same
Bram Moolenaar <Bram@vim.org>
parents:
25368
diff
changeset
|
2722 wp = find_popup_win(id); |
17817
e8a7029efa40
patch 8.1.1905: cannot set all properties of the info popup
Bram Moolenaar <Bram@vim.org>
parents:
17815
diff
changeset
|
2723 if (wp != NULL) |
28778
a8c2bd5fc727
patch 8.2.4913: popup_hide() does not always have effect
Bram Moolenaar <Bram@vim.org>
parents:
28550
diff
changeset
|
2724 { |
17817
e8a7029efa40
patch 8.1.1905: cannot set all properties of the info popup
Bram Moolenaar <Bram@vim.org>
parents:
17815
diff
changeset
|
2725 popup_hide(wp); |
28778
a8c2bd5fc727
patch 8.2.4913: popup_hide() does not always have effect
Bram Moolenaar <Bram@vim.org>
parents:
28550
diff
changeset
|
2726 wp->w_popup_flags |= POPF_HIDDEN_FORCE; |
a8c2bd5fc727
patch 8.2.4913: popup_hide() does not always have effect
Bram Moolenaar <Bram@vim.org>
parents:
28550
diff
changeset
|
2727 } |
17817
e8a7029efa40
patch 8.1.1905: cannot set all properties of the info popup
Bram Moolenaar <Bram@vim.org>
parents:
17815
diff
changeset
|
2728 } |
e8a7029efa40
patch 8.1.1905: cannot set all properties of the info popup
Bram Moolenaar <Bram@vim.org>
parents:
17815
diff
changeset
|
2729 |
e8a7029efa40
patch 8.1.1905: cannot set all properties of the info popup
Bram Moolenaar <Bram@vim.org>
parents:
17815
diff
changeset
|
2730 void |
e8a7029efa40
patch 8.1.1905: cannot set all properties of the info popup
Bram Moolenaar <Bram@vim.org>
parents:
17815
diff
changeset
|
2731 popup_show(win_T *wp) |
e8a7029efa40
patch 8.1.1905: cannot set all properties of the info popup
Bram Moolenaar <Bram@vim.org>
parents:
17815
diff
changeset
|
2732 { |
e8a7029efa40
patch 8.1.1905: cannot set all properties of the info popup
Bram Moolenaar <Bram@vim.org>
parents:
17815
diff
changeset
|
2733 if ((wp->w_popup_flags & POPF_HIDDEN) != 0) |
16809
5ff14f96f1c9
patch 8.1.1406: popup_hide() and popup_show() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16806
diff
changeset
|
2734 { |
17817
e8a7029efa40
patch 8.1.1905: cannot set all properties of the info popup
Bram Moolenaar <Bram@vim.org>
parents:
17815
diff
changeset
|
2735 wp->w_popup_flags &= ~POPF_HIDDEN; |
29732
89e1d67814a9
patch 9.0.0206: redraw flags are not named specifically
Bram Moolenaar <Bram@vim.org>
parents:
29660
diff
changeset
|
2736 redraw_all_later(UPD_NOT_VALID); |
16986
03f3a9ca2770
patch 8.1.1493: redrawing with popups is slow and causes flicker
Bram Moolenaar <Bram@vim.org>
parents:
16908
diff
changeset
|
2737 popup_mask_refresh = TRUE; |
16809
5ff14f96f1c9
patch 8.1.1406: popup_hide() and popup_show() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16806
diff
changeset
|
2738 } |
5ff14f96f1c9
patch 8.1.1406: popup_hide() and popup_show() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16806
diff
changeset
|
2739 } |
5ff14f96f1c9
patch 8.1.1406: popup_hide() and popup_show() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16806
diff
changeset
|
2740 |
5ff14f96f1c9
patch 8.1.1406: popup_hide() and popup_show() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16806
diff
changeset
|
2741 /* |
5ff14f96f1c9
patch 8.1.1406: popup_hide() and popup_show() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16806
diff
changeset
|
2742 * popup_show({id}) |
5ff14f96f1c9
patch 8.1.1406: popup_hide() and popup_show() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16806
diff
changeset
|
2743 */ |
5ff14f96f1c9
patch 8.1.1406: popup_hide() and popup_show() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16806
diff
changeset
|
2744 void |
5ff14f96f1c9
patch 8.1.1406: popup_hide() and popup_show() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16806
diff
changeset
|
2745 f_popup_show(typval_T *argvars, typval_T *rettv UNUSED) |
5ff14f96f1c9
patch 8.1.1406: popup_hide() and popup_show() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16806
diff
changeset
|
2746 { |
25384
e8e2c4d33b9b
patch 8.2.3229: Vim9: runtime and compile time type checks are not the same
Bram Moolenaar <Bram@vim.org>
parents:
25368
diff
changeset
|
2747 int id; |
e8e2c4d33b9b
patch 8.2.3229: Vim9: runtime and compile time type checks are not the same
Bram Moolenaar <Bram@vim.org>
parents:
25368
diff
changeset
|
2748 win_T *wp; |
e8e2c4d33b9b
patch 8.2.3229: Vim9: runtime and compile time type checks are not the same
Bram Moolenaar <Bram@vim.org>
parents:
25368
diff
changeset
|
2749 |
e8e2c4d33b9b
patch 8.2.3229: Vim9: runtime and compile time type checks are not the same
Bram Moolenaar <Bram@vim.org>
parents:
25368
diff
changeset
|
2750 if (in_vim9script() && check_for_number_arg(argvars, 0) == FAIL) |
e8e2c4d33b9b
patch 8.2.3229: Vim9: runtime and compile time type checks are not the same
Bram Moolenaar <Bram@vim.org>
parents:
25368
diff
changeset
|
2751 return; |
e8e2c4d33b9b
patch 8.2.3229: Vim9: runtime and compile time type checks are not the same
Bram Moolenaar <Bram@vim.org>
parents:
25368
diff
changeset
|
2752 |
e8e2c4d33b9b
patch 8.2.3229: Vim9: runtime and compile time type checks are not the same
Bram Moolenaar <Bram@vim.org>
parents:
25368
diff
changeset
|
2753 id = (int)tv_get_number(argvars); |
e8e2c4d33b9b
patch 8.2.3229: Vim9: runtime and compile time type checks are not the same
Bram Moolenaar <Bram@vim.org>
parents:
25368
diff
changeset
|
2754 wp = find_popup_win(id); |
17817
e8a7029efa40
patch 8.1.1905: cannot set all properties of the info popup
Bram Moolenaar <Bram@vim.org>
parents:
17815
diff
changeset
|
2755 if (wp != NULL) |
18396
ba5d8c5d77d7
patch 8.1.2192: cannot easily fill the info popup asynchronously
Bram Moolenaar <Bram@vim.org>
parents:
18339
diff
changeset
|
2756 { |
28778
a8c2bd5fc727
patch 8.2.4913: popup_hide() does not always have effect
Bram Moolenaar <Bram@vim.org>
parents:
28550
diff
changeset
|
2757 wp->w_popup_flags &= ~POPF_HIDDEN_FORCE; |
17817
e8a7029efa40
patch 8.1.1905: cannot set all properties of the info popup
Bram Moolenaar <Bram@vim.org>
parents:
17815
diff
changeset
|
2758 popup_show(wp); |
18767
068337e86133
patch 8.1.2373: cannot build with +popupwin but without +quickfix
Bram Moolenaar <Bram@vim.org>
parents:
18763
diff
changeset
|
2759 #ifdef FEAT_QUICKFIX |
18396
ba5d8c5d77d7
patch 8.1.2192: cannot easily fill the info popup asynchronously
Bram Moolenaar <Bram@vim.org>
parents:
18339
diff
changeset
|
2760 if (wp->w_popup_flags & POPF_INFO) |
ba5d8c5d77d7
patch 8.1.2192: cannot easily fill the info popup asynchronously
Bram Moolenaar <Bram@vim.org>
parents:
18339
diff
changeset
|
2761 pum_position_info_popup(wp); |
18767
068337e86133
patch 8.1.2373: cannot build with +popupwin but without +quickfix
Bram Moolenaar <Bram@vim.org>
parents:
18763
diff
changeset
|
2762 #endif |
18396
ba5d8c5d77d7
patch 8.1.2192: cannot easily fill the info popup asynchronously
Bram Moolenaar <Bram@vim.org>
parents:
18339
diff
changeset
|
2763 } |
16778
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2764 } |
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2765 |
17107
0001d10a7661
patch 8.1.1553: not easy to change the text in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17101
diff
changeset
|
2766 /* |
0001d10a7661
patch 8.1.1553: not easy to change the text in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17101
diff
changeset
|
2767 * popup_settext({id}, {text}) |
0001d10a7661
patch 8.1.1553: not easy to change the text in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17101
diff
changeset
|
2768 */ |
0001d10a7661
patch 8.1.1553: not easy to change the text in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17101
diff
changeset
|
2769 void |
0001d10a7661
patch 8.1.1553: not easy to change the text in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17101
diff
changeset
|
2770 f_popup_settext(typval_T *argvars, typval_T *rettv UNUSED) |
0001d10a7661
patch 8.1.1553: not easy to change the text in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17101
diff
changeset
|
2771 { |
25338
e2be9f3c5907
patch 8.2.3206: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25300
diff
changeset
|
2772 int id; |
e2be9f3c5907
patch 8.2.3206: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25300
diff
changeset
|
2773 win_T *wp; |
e2be9f3c5907
patch 8.2.3206: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25300
diff
changeset
|
2774 |
e2be9f3c5907
patch 8.2.3206: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25300
diff
changeset
|
2775 if (in_vim9script() |
e2be9f3c5907
patch 8.2.3206: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25300
diff
changeset
|
2776 && (check_for_number_arg(argvars, 0) == FAIL |
e2be9f3c5907
patch 8.2.3206: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25300
diff
changeset
|
2777 || check_for_string_or_list_arg(argvars, 1) == FAIL)) |
e2be9f3c5907
patch 8.2.3206: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25300
diff
changeset
|
2778 return; |
e2be9f3c5907
patch 8.2.3206: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25300
diff
changeset
|
2779 |
e2be9f3c5907
patch 8.2.3206: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25300
diff
changeset
|
2780 id = (int)tv_get_number(&argvars[0]); |
e2be9f3c5907
patch 8.2.3206: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25300
diff
changeset
|
2781 wp = find_popup_win(id); |
17107
0001d10a7661
patch 8.1.1553: not easy to change the text in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17101
diff
changeset
|
2782 if (wp != NULL) |
0001d10a7661
patch 8.1.1553: not easy to change the text in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17101
diff
changeset
|
2783 { |
30043
fd855ad74887
patch 9.0.0359: error message for wrong argument type is not specific
Bram Moolenaar <Bram@vim.org>
parents:
30027
diff
changeset
|
2784 if (check_for_string_or_list_arg(argvars, 1) != FAIL) |
17225
09fa437d33d8
patch 8.1.1612: cannot show an existing buffer in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17219
diff
changeset
|
2785 { |
09fa437d33d8
patch 8.1.1612: cannot show an existing buffer in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17219
diff
changeset
|
2786 popup_set_buffer_text(wp->w_buffer, argvars[1]); |
29732
89e1d67814a9
patch 9.0.0206: redraw flags are not named specifically
Bram Moolenaar <Bram@vim.org>
parents:
29660
diff
changeset
|
2787 redraw_win_later(wp, UPD_NOT_VALID); |
17225
09fa437d33d8
patch 8.1.1612: cannot show an existing buffer in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17219
diff
changeset
|
2788 popup_adjust_position(wp); |
09fa437d33d8
patch 8.1.1612: cannot show an existing buffer in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17219
diff
changeset
|
2789 } |
17107
0001d10a7661
patch 8.1.1553: not easy to change the text in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17101
diff
changeset
|
2790 } |
0001d10a7661
patch 8.1.1553: not easy to change the text in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17101
diff
changeset
|
2791 } |
0001d10a7661
patch 8.1.1553: not easy to change the text in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17101
diff
changeset
|
2792 |
16800
12e3a3afdb6a
patch 8.1.1402: "timer" option of popup windows not supported
Bram Moolenaar <Bram@vim.org>
parents:
16796
diff
changeset
|
2793 static void |
16809
5ff14f96f1c9
patch 8.1.1406: popup_hide() and popup_show() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16806
diff
changeset
|
2794 popup_free(win_T *wp) |
16800
12e3a3afdb6a
patch 8.1.1402: "timer" option of popup windows not supported
Bram Moolenaar <Bram@vim.org>
parents:
16796
diff
changeset
|
2795 { |
17440
a5874fdc8f3a
patch 8.1.1718: popup menu highlighting does not look good
Bram Moolenaar <Bram@vim.org>
parents:
17431
diff
changeset
|
2796 sign_undefine_by_name(popup_get_sign_name(wp), FALSE); |
16833
6699c03347d2
patch 8.1.1418: win_execute() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16829
diff
changeset
|
2797 wp->w_buffer->b_locked = FALSE; |
17551
8cca2654d459
patch 8.1.1773: the preview popup window may be too far to the right
Bram Moolenaar <Bram@vim.org>
parents:
17545
diff
changeset
|
2798 if (wp->w_winrow + popup_height(wp) >= cmdline_row) |
16800
12e3a3afdb6a
patch 8.1.1402: "timer" option of popup windows not supported
Bram Moolenaar <Bram@vim.org>
parents:
16796
diff
changeset
|
2799 clear_cmdline = TRUE; |
12e3a3afdb6a
patch 8.1.1402: "timer" option of popup windows not supported
Bram Moolenaar <Bram@vim.org>
parents:
16796
diff
changeset
|
2800 win_free_popup(wp); |
17440
a5874fdc8f3a
patch 8.1.1718: popup menu highlighting does not look good
Bram Moolenaar <Bram@vim.org>
parents:
17431
diff
changeset
|
2801 |
29912
c9ff1715f03d
patch 9.0.0294: crash when 'cmdheight' is 0 and popup_clear() used
Bram Moolenaar <Bram@vim.org>
parents:
29900
diff
changeset
|
2802 #ifdef HAS_MESSAGE_WINDOW |
c9ff1715f03d
patch 9.0.0294: crash when 'cmdheight' is 0 and popup_clear() used
Bram Moolenaar <Bram@vim.org>
parents:
29900
diff
changeset
|
2803 if (wp == message_win) |
c9ff1715f03d
patch 9.0.0294: crash when 'cmdheight' is 0 and popup_clear() used
Bram Moolenaar <Bram@vim.org>
parents:
29900
diff
changeset
|
2804 message_win = NULL; |
c9ff1715f03d
patch 9.0.0294: crash when 'cmdheight' is 0 and popup_clear() used
Bram Moolenaar <Bram@vim.org>
parents:
29900
diff
changeset
|
2805 #endif |
c9ff1715f03d
patch 9.0.0294: crash when 'cmdheight' is 0 and popup_clear() used
Bram Moolenaar <Bram@vim.org>
parents:
29900
diff
changeset
|
2806 |
29732
89e1d67814a9
patch 9.0.0206: redraw flags are not named specifically
Bram Moolenaar <Bram@vim.org>
parents:
29660
diff
changeset
|
2807 redraw_all_later(UPD_NOT_VALID); |
16986
03f3a9ca2770
patch 8.1.1493: redrawing with popups is slow and causes flicker
Bram Moolenaar <Bram@vim.org>
parents:
16908
diff
changeset
|
2808 popup_mask_refresh = TRUE; |
16800
12e3a3afdb6a
patch 8.1.1402: "timer" option of popup windows not supported
Bram Moolenaar <Bram@vim.org>
parents:
16796
diff
changeset
|
2809 } |
12e3a3afdb6a
patch 8.1.1402: "timer" option of popup windows not supported
Bram Moolenaar <Bram@vim.org>
parents:
16796
diff
changeset
|
2810 |
19637
8de319d1b82c
patch 8.2.0375: Coverity warning for not using return value
Bram Moolenaar <Bram@vim.org>
parents:
19629
diff
changeset
|
2811 static void |
8de319d1b82c
patch 8.2.0375: Coverity warning for not using return value
Bram Moolenaar <Bram@vim.org>
parents:
19629
diff
changeset
|
2812 error_for_popup_window(void) |
8de319d1b82c
patch 8.2.0375: Coverity warning for not using return value
Bram Moolenaar <Bram@vim.org>
parents:
19629
diff
changeset
|
2813 { |
26986
79ea140936e9
patch 8.2.4022: two error messages in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
26962
diff
changeset
|
2814 emsg(_(e_not_allowed_in_popup_window)); |
19637
8de319d1b82c
patch 8.2.0375: Coverity warning for not using return value
Bram Moolenaar <Bram@vim.org>
parents:
19629
diff
changeset
|
2815 } |
8de319d1b82c
patch 8.2.0375: Coverity warning for not using return value
Bram Moolenaar <Bram@vim.org>
parents:
19629
diff
changeset
|
2816 |
8de319d1b82c
patch 8.2.0375: Coverity warning for not using return value
Bram Moolenaar <Bram@vim.org>
parents:
19629
diff
changeset
|
2817 int |
8de319d1b82c
patch 8.2.0375: Coverity warning for not using return value
Bram Moolenaar <Bram@vim.org>
parents:
19629
diff
changeset
|
2818 error_if_popup_window(int also_with_term UNUSED) |
8de319d1b82c
patch 8.2.0375: Coverity warning for not using return value
Bram Moolenaar <Bram@vim.org>
parents:
19629
diff
changeset
|
2819 { |
8de319d1b82c
patch 8.2.0375: Coverity warning for not using return value
Bram Moolenaar <Bram@vim.org>
parents:
19629
diff
changeset
|
2820 // win_execute() may set "curwin" to a popup window temporarily, but many |
8de319d1b82c
patch 8.2.0375: Coverity warning for not using return value
Bram Moolenaar <Bram@vim.org>
parents:
19629
diff
changeset
|
2821 // commands are disallowed then. When a terminal runs in the popup most |
8de319d1b82c
patch 8.2.0375: Coverity warning for not using return value
Bram Moolenaar <Bram@vim.org>
parents:
19629
diff
changeset
|
2822 // things are allowed. When a terminal is finished it can be closed. |
8de319d1b82c
patch 8.2.0375: Coverity warning for not using return value
Bram Moolenaar <Bram@vim.org>
parents:
19629
diff
changeset
|
2823 if (WIN_IS_POPUP(curwin) |
8de319d1b82c
patch 8.2.0375: Coverity warning for not using return value
Bram Moolenaar <Bram@vim.org>
parents:
19629
diff
changeset
|
2824 # ifdef FEAT_TERMINAL |
8de319d1b82c
patch 8.2.0375: Coverity warning for not using return value
Bram Moolenaar <Bram@vim.org>
parents:
19629
diff
changeset
|
2825 && (also_with_term || curbuf->b_term == NULL) |
8de319d1b82c
patch 8.2.0375: Coverity warning for not using return value
Bram Moolenaar <Bram@vim.org>
parents:
19629
diff
changeset
|
2826 # endif |
8de319d1b82c
patch 8.2.0375: Coverity warning for not using return value
Bram Moolenaar <Bram@vim.org>
parents:
19629
diff
changeset
|
2827 ) |
8de319d1b82c
patch 8.2.0375: Coverity warning for not using return value
Bram Moolenaar <Bram@vim.org>
parents:
19629
diff
changeset
|
2828 { |
8de319d1b82c
patch 8.2.0375: Coverity warning for not using return value
Bram Moolenaar <Bram@vim.org>
parents:
19629
diff
changeset
|
2829 error_for_popup_window(); |
8de319d1b82c
patch 8.2.0375: Coverity warning for not using return value
Bram Moolenaar <Bram@vim.org>
parents:
19629
diff
changeset
|
2830 return TRUE; |
8de319d1b82c
patch 8.2.0375: Coverity warning for not using return value
Bram Moolenaar <Bram@vim.org>
parents:
19629
diff
changeset
|
2831 } |
8de319d1b82c
patch 8.2.0375: Coverity warning for not using return value
Bram Moolenaar <Bram@vim.org>
parents:
19629
diff
changeset
|
2832 return FALSE; |
8de319d1b82c
patch 8.2.0375: Coverity warning for not using return value
Bram Moolenaar <Bram@vim.org>
parents:
19629
diff
changeset
|
2833 } |
8de319d1b82c
patch 8.2.0375: Coverity warning for not using return value
Bram Moolenaar <Bram@vim.org>
parents:
19629
diff
changeset
|
2834 |
16794
ddfa924df50d
patch 8.1.1399: popup windows not adjusted when switching tabs
Bram Moolenaar <Bram@vim.org>
parents:
16778
diff
changeset
|
2835 /* |
ddfa924df50d
patch 8.1.1399: popup windows not adjusted when switching tabs
Bram Moolenaar <Bram@vim.org>
parents:
16778
diff
changeset
|
2836 * Close a popup window by Window-id. |
16890
5131023c5728
patch 8.1.1446: popup window callback not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16888
diff
changeset
|
2837 * Does not invoke the callback. |
20382
361069b687d6
patch 8.2.0746: popup_clear() hangs when a popup can't be closed
Bram Moolenaar <Bram@vim.org>
parents:
19934
diff
changeset
|
2838 * Return OK if the popup was closed, FAIL otherwise. |
16794
ddfa924df50d
patch 8.1.1399: popup windows not adjusted when switching tabs
Bram Moolenaar <Bram@vim.org>
parents:
16778
diff
changeset
|
2839 */ |
20382
361069b687d6
patch 8.2.0746: popup_clear() hangs when a popup can't be closed
Bram Moolenaar <Bram@vim.org>
parents:
19934
diff
changeset
|
2840 int |
20384
42ab4d40e78f
patch 8.2.0747: cannot forcefully close all popups
Bram Moolenaar <Bram@vim.org>
parents:
20382
diff
changeset
|
2841 popup_close(int id, int force) |
16778
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2842 { |
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2843 win_T *wp; |
16794
ddfa924df50d
patch 8.1.1399: popup windows not adjusted when switching tabs
Bram Moolenaar <Bram@vim.org>
parents:
16778
diff
changeset
|
2844 tabpage_T *tp; |
16778
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2845 win_T *prev = NULL; |
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2846 |
16794
ddfa924df50d
patch 8.1.1399: popup windows not adjusted when switching tabs
Bram Moolenaar <Bram@vim.org>
parents:
16778
diff
changeset
|
2847 // go through global popups |
16778
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2848 for (wp = first_popupwin; wp != NULL; prev = wp, wp = wp->w_next) |
16794
ddfa924df50d
patch 8.1.1399: popup windows not adjusted when switching tabs
Bram Moolenaar <Bram@vim.org>
parents:
16778
diff
changeset
|
2849 if (wp->w_id == id) |
16778
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2850 { |
19629
804322d6c6ba
patch 8.2.0371: crash with combination of terminal popup and autocmd
Bram Moolenaar <Bram@vim.org>
parents:
19605
diff
changeset
|
2851 if (wp == curwin) |
804322d6c6ba
patch 8.2.0371: crash with combination of terminal popup and autocmd
Bram Moolenaar <Bram@vim.org>
parents:
19605
diff
changeset
|
2852 { |
20384
42ab4d40e78f
patch 8.2.0747: cannot forcefully close all popups
Bram Moolenaar <Bram@vim.org>
parents:
20382
diff
changeset
|
2853 if (!force) |
42ab4d40e78f
patch 8.2.0747: cannot forcefully close all popups
Bram Moolenaar <Bram@vim.org>
parents:
20382
diff
changeset
|
2854 { |
42ab4d40e78f
patch 8.2.0747: cannot forcefully close all popups
Bram Moolenaar <Bram@vim.org>
parents:
20382
diff
changeset
|
2855 error_for_popup_window(); |
42ab4d40e78f
patch 8.2.0747: cannot forcefully close all popups
Bram Moolenaar <Bram@vim.org>
parents:
20382
diff
changeset
|
2856 return FAIL; |
42ab4d40e78f
patch 8.2.0747: cannot forcefully close all popups
Bram Moolenaar <Bram@vim.org>
parents:
20382
diff
changeset
|
2857 } |
20865
0e4cf74642a3
patch 8.2.0984: not using previous window when closing a shell popup window
Bram Moolenaar <Bram@vim.org>
parents:
20599
diff
changeset
|
2858 back_to_prevwin(wp); |
19629
804322d6c6ba
patch 8.2.0371: crash with combination of terminal popup and autocmd
Bram Moolenaar <Bram@vim.org>
parents:
19605
diff
changeset
|
2859 } |
16778
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2860 if (prev == NULL) |
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2861 first_popupwin = wp->w_next; |
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2862 else |
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2863 prev->w_next = wp->w_next; |
16809
5ff14f96f1c9
patch 8.1.1406: popup_hide() and popup_show() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16806
diff
changeset
|
2864 popup_free(wp); |
20382
361069b687d6
patch 8.2.0746: popup_clear() hangs when a popup can't be closed
Bram Moolenaar <Bram@vim.org>
parents:
19934
diff
changeset
|
2865 return OK; |
16778
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2866 } |
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2867 |
16794
ddfa924df50d
patch 8.1.1399: popup windows not adjusted when switching tabs
Bram Moolenaar <Bram@vim.org>
parents:
16778
diff
changeset
|
2868 // go through tab-local popups |
ddfa924df50d
patch 8.1.1399: popup windows not adjusted when switching tabs
Bram Moolenaar <Bram@vim.org>
parents:
16778
diff
changeset
|
2869 FOR_ALL_TABPAGES(tp) |
20384
42ab4d40e78f
patch 8.2.0747: cannot forcefully close all popups
Bram Moolenaar <Bram@vim.org>
parents:
20382
diff
changeset
|
2870 if (popup_close_tabpage(tp, id, force) == OK) |
20382
361069b687d6
patch 8.2.0746: popup_clear() hangs when a popup can't be closed
Bram Moolenaar <Bram@vim.org>
parents:
19934
diff
changeset
|
2871 return OK; |
361069b687d6
patch 8.2.0746: popup_clear() hangs when a popup can't be closed
Bram Moolenaar <Bram@vim.org>
parents:
19934
diff
changeset
|
2872 return FAIL; |
16794
ddfa924df50d
patch 8.1.1399: popup windows not adjusted when switching tabs
Bram Moolenaar <Bram@vim.org>
parents:
16778
diff
changeset
|
2873 } |
ddfa924df50d
patch 8.1.1399: popup windows not adjusted when switching tabs
Bram Moolenaar <Bram@vim.org>
parents:
16778
diff
changeset
|
2874 |
ddfa924df50d
patch 8.1.1399: popup windows not adjusted when switching tabs
Bram Moolenaar <Bram@vim.org>
parents:
16778
diff
changeset
|
2875 /* |
ddfa924df50d
patch 8.1.1399: popup windows not adjusted when switching tabs
Bram Moolenaar <Bram@vim.org>
parents:
16778
diff
changeset
|
2876 * Close a popup window with Window-id "id" in tabpage "tp". |
ddfa924df50d
patch 8.1.1399: popup windows not adjusted when switching tabs
Bram Moolenaar <Bram@vim.org>
parents:
16778
diff
changeset
|
2877 */ |
20382
361069b687d6
patch 8.2.0746: popup_clear() hangs when a popup can't be closed
Bram Moolenaar <Bram@vim.org>
parents:
19934
diff
changeset
|
2878 int |
20384
42ab4d40e78f
patch 8.2.0747: cannot forcefully close all popups
Bram Moolenaar <Bram@vim.org>
parents:
20382
diff
changeset
|
2879 popup_close_tabpage(tabpage_T *tp, int id, int force) |
16794
ddfa924df50d
patch 8.1.1399: popup windows not adjusted when switching tabs
Bram Moolenaar <Bram@vim.org>
parents:
16778
diff
changeset
|
2880 { |
ddfa924df50d
patch 8.1.1399: popup windows not adjusted when switching tabs
Bram Moolenaar <Bram@vim.org>
parents:
16778
diff
changeset
|
2881 win_T *wp; |
16796
5f98d80d116a
patch 8.1.1400: using global pointer for tab-local popups is clumsy
Bram Moolenaar <Bram@vim.org>
parents:
16794
diff
changeset
|
2882 win_T **root = &tp->tp_first_popupwin; |
16794
ddfa924df50d
patch 8.1.1399: popup windows not adjusted when switching tabs
Bram Moolenaar <Bram@vim.org>
parents:
16778
diff
changeset
|
2883 win_T *prev = NULL; |
ddfa924df50d
patch 8.1.1399: popup windows not adjusted when switching tabs
Bram Moolenaar <Bram@vim.org>
parents:
16778
diff
changeset
|
2884 |
ddfa924df50d
patch 8.1.1399: popup windows not adjusted when switching tabs
Bram Moolenaar <Bram@vim.org>
parents:
16778
diff
changeset
|
2885 for (wp = *root; wp != NULL; prev = wp, wp = wp->w_next) |
ddfa924df50d
patch 8.1.1399: popup windows not adjusted when switching tabs
Bram Moolenaar <Bram@vim.org>
parents:
16778
diff
changeset
|
2886 if (wp->w_id == id) |
ddfa924df50d
patch 8.1.1399: popup windows not adjusted when switching tabs
Bram Moolenaar <Bram@vim.org>
parents:
16778
diff
changeset
|
2887 { |
19629
804322d6c6ba
patch 8.2.0371: crash with combination of terminal popup and autocmd
Bram Moolenaar <Bram@vim.org>
parents:
19605
diff
changeset
|
2888 if (wp == curwin) |
804322d6c6ba
patch 8.2.0371: crash with combination of terminal popup and autocmd
Bram Moolenaar <Bram@vim.org>
parents:
19605
diff
changeset
|
2889 { |
20384
42ab4d40e78f
patch 8.2.0747: cannot forcefully close all popups
Bram Moolenaar <Bram@vim.org>
parents:
20382
diff
changeset
|
2890 if (!force) |
42ab4d40e78f
patch 8.2.0747: cannot forcefully close all popups
Bram Moolenaar <Bram@vim.org>
parents:
20382
diff
changeset
|
2891 { |
42ab4d40e78f
patch 8.2.0747: cannot forcefully close all popups
Bram Moolenaar <Bram@vim.org>
parents:
20382
diff
changeset
|
2892 error_for_popup_window(); |
42ab4d40e78f
patch 8.2.0747: cannot forcefully close all popups
Bram Moolenaar <Bram@vim.org>
parents:
20382
diff
changeset
|
2893 return FAIL; |
42ab4d40e78f
patch 8.2.0747: cannot forcefully close all popups
Bram Moolenaar <Bram@vim.org>
parents:
20382
diff
changeset
|
2894 } |
20865
0e4cf74642a3
patch 8.2.0984: not using previous window when closing a shell popup window
Bram Moolenaar <Bram@vim.org>
parents:
20599
diff
changeset
|
2895 back_to_prevwin(wp); |
19629
804322d6c6ba
patch 8.2.0371: crash with combination of terminal popup and autocmd
Bram Moolenaar <Bram@vim.org>
parents:
19605
diff
changeset
|
2896 } |
16794
ddfa924df50d
patch 8.1.1399: popup windows not adjusted when switching tabs
Bram Moolenaar <Bram@vim.org>
parents:
16778
diff
changeset
|
2897 if (prev == NULL) |
ddfa924df50d
patch 8.1.1399: popup windows not adjusted when switching tabs
Bram Moolenaar <Bram@vim.org>
parents:
16778
diff
changeset
|
2898 *root = wp->w_next; |
ddfa924df50d
patch 8.1.1399: popup windows not adjusted when switching tabs
Bram Moolenaar <Bram@vim.org>
parents:
16778
diff
changeset
|
2899 else |
ddfa924df50d
patch 8.1.1399: popup windows not adjusted when switching tabs
Bram Moolenaar <Bram@vim.org>
parents:
16778
diff
changeset
|
2900 prev->w_next = wp->w_next; |
16809
5ff14f96f1c9
patch 8.1.1406: popup_hide() and popup_show() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16806
diff
changeset
|
2901 popup_free(wp); |
20382
361069b687d6
patch 8.2.0746: popup_clear() hangs when a popup can't be closed
Bram Moolenaar <Bram@vim.org>
parents:
19934
diff
changeset
|
2902 return OK; |
16794
ddfa924df50d
patch 8.1.1399: popup windows not adjusted when switching tabs
Bram Moolenaar <Bram@vim.org>
parents:
16778
diff
changeset
|
2903 } |
20382
361069b687d6
patch 8.2.0746: popup_clear() hangs when a popup can't be closed
Bram Moolenaar <Bram@vim.org>
parents:
19934
diff
changeset
|
2904 return FAIL; |
16778
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2905 } |
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2906 |
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2907 void |
20384
42ab4d40e78f
patch 8.2.0747: cannot forcefully close all popups
Bram Moolenaar <Bram@vim.org>
parents:
20382
diff
changeset
|
2908 close_all_popups(int force) |
16778
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2909 { |
20384
42ab4d40e78f
patch 8.2.0747: cannot forcefully close all popups
Bram Moolenaar <Bram@vim.org>
parents:
20382
diff
changeset
|
2910 if (!force && ERROR_IF_ANY_POPUP_WINDOW) |
19166
215793f6b59d
patch 8.2.0142: possible to enter popup window with CTRL-W p
Bram Moolenaar <Bram@vim.org>
parents:
19117
diff
changeset
|
2911 return; |
16778
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2912 while (first_popupwin != NULL) |
20384
42ab4d40e78f
patch 8.2.0747: cannot forcefully close all popups
Bram Moolenaar <Bram@vim.org>
parents:
20382
diff
changeset
|
2913 if (popup_close(first_popupwin->w_id, force) == FAIL) |
20382
361069b687d6
patch 8.2.0746: popup_clear() hangs when a popup can't be closed
Bram Moolenaar <Bram@vim.org>
parents:
19934
diff
changeset
|
2914 return; |
16796
5f98d80d116a
patch 8.1.1400: using global pointer for tab-local popups is clumsy
Bram Moolenaar <Bram@vim.org>
parents:
16794
diff
changeset
|
2915 while (curtab->tp_first_popupwin != NULL) |
20384
42ab4d40e78f
patch 8.2.0747: cannot forcefully close all popups
Bram Moolenaar <Bram@vim.org>
parents:
20382
diff
changeset
|
2916 if (popup_close(curtab->tp_first_popupwin->w_id, force) == FAIL) |
20382
361069b687d6
patch 8.2.0746: popup_clear() hangs when a popup can't be closed
Bram Moolenaar <Bram@vim.org>
parents:
19934
diff
changeset
|
2917 return; |
16778
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2918 } |
eda4d65f232c
patch 8.1.1391: no popup window support
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2919 |
16817
069ee8dc8c8d
patch 8.1.1410: popup_move() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16813
diff
changeset
|
2920 /* |
069ee8dc8c8d
patch 8.1.1410: popup_move() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16813
diff
changeset
|
2921 * popup_move({id}, {options}) |
069ee8dc8c8d
patch 8.1.1410: popup_move() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16813
diff
changeset
|
2922 */ |
069ee8dc8c8d
patch 8.1.1410: popup_move() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16813
diff
changeset
|
2923 void |
069ee8dc8c8d
patch 8.1.1410: popup_move() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16813
diff
changeset
|
2924 f_popup_move(typval_T *argvars, typval_T *rettv UNUSED) |
069ee8dc8c8d
patch 8.1.1410: popup_move() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16813
diff
changeset
|
2925 { |
17123
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
2926 dict_T *dict; |
25252
acda780ffc3e
patch 8.2.3162: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25064
diff
changeset
|
2927 int id; |
acda780ffc3e
patch 8.2.3162: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25064
diff
changeset
|
2928 win_T *wp; |
acda780ffc3e
patch 8.2.3162: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25064
diff
changeset
|
2929 |
acda780ffc3e
patch 8.2.3162: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25064
diff
changeset
|
2930 if (in_vim9script() |
acda780ffc3e
patch 8.2.3162: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25064
diff
changeset
|
2931 && (check_for_number_arg(argvars, 0) == FAIL |
acda780ffc3e
patch 8.2.3162: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25064
diff
changeset
|
2932 || check_for_dict_arg(argvars, 1) == FAIL)) |
acda780ffc3e
patch 8.2.3162: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25064
diff
changeset
|
2933 return; |
acda780ffc3e
patch 8.2.3162: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25064
diff
changeset
|
2934 |
acda780ffc3e
patch 8.2.3162: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25064
diff
changeset
|
2935 id = (int)tv_get_number(argvars); |
acda780ffc3e
patch 8.2.3162: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25064
diff
changeset
|
2936 wp = find_popup_win(id); |
16817
069ee8dc8c8d
patch 8.1.1410: popup_move() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16813
diff
changeset
|
2937 if (wp == NULL) |
069ee8dc8c8d
patch 8.1.1410: popup_move() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16813
diff
changeset
|
2938 return; // invalid {id} |
069ee8dc8c8d
patch 8.1.1410: popup_move() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16813
diff
changeset
|
2939 |
29994
86eb4aba16c3
patch 9.0.0335: checks for Dictionary argument often give a vague error
Bram Moolenaar <Bram@vim.org>
parents:
29966
diff
changeset
|
2940 if (check_for_nonnull_dict_arg(argvars, 1) == FAIL) |
16817
069ee8dc8c8d
patch 8.1.1410: popup_move() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16813
diff
changeset
|
2941 return; |
17123
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
2942 dict = argvars[1].vval.v_dict; |
16817
069ee8dc8c8d
patch 8.1.1410: popup_move() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16813
diff
changeset
|
2943 |
17123
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
2944 apply_move_options(wp, dict); |
16817
069ee8dc8c8d
patch 8.1.1410: popup_move() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16813
diff
changeset
|
2945 |
069ee8dc8c8d
patch 8.1.1410: popup_move() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16813
diff
changeset
|
2946 if (wp->w_winrow + wp->w_height >= cmdline_row) |
069ee8dc8c8d
patch 8.1.1410: popup_move() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16813
diff
changeset
|
2947 clear_cmdline = TRUE; |
069ee8dc8c8d
patch 8.1.1410: popup_move() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16813
diff
changeset
|
2948 popup_adjust_position(wp); |
069ee8dc8c8d
patch 8.1.1410: popup_move() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16813
diff
changeset
|
2949 } |
069ee8dc8c8d
patch 8.1.1410: popup_move() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16813
diff
changeset
|
2950 |
16829
5cebaecad422
patch 8.1.1416: popup_getposition() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16817
diff
changeset
|
2951 /* |
17123
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
2952 * popup_setoptions({id}, {options}) |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
2953 */ |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
2954 void |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
2955 f_popup_setoptions(typval_T *argvars, typval_T *rettv UNUSED) |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
2956 { |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
2957 dict_T *dict; |
25252
acda780ffc3e
patch 8.2.3162: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25064
diff
changeset
|
2958 int id; |
acda780ffc3e
patch 8.2.3162: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25064
diff
changeset
|
2959 win_T *wp; |
17180
8581779aa16f
patch 8.1.1589: popup window does not indicate scroll position
Bram Moolenaar <Bram@vim.org>
parents:
17174
diff
changeset
|
2960 linenr_T old_firstline; |
17123
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
2961 |
25252
acda780ffc3e
patch 8.2.3162: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25064
diff
changeset
|
2962 if (in_vim9script() |
acda780ffc3e
patch 8.2.3162: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25064
diff
changeset
|
2963 && (check_for_number_arg(argvars, 0) == FAIL |
acda780ffc3e
patch 8.2.3162: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25064
diff
changeset
|
2964 || check_for_dict_arg(argvars, 1) == FAIL)) |
acda780ffc3e
patch 8.2.3162: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25064
diff
changeset
|
2965 return; |
acda780ffc3e
patch 8.2.3162: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25064
diff
changeset
|
2966 |
acda780ffc3e
patch 8.2.3162: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25064
diff
changeset
|
2967 id = (int)tv_get_number(argvars); |
acda780ffc3e
patch 8.2.3162: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents:
25064
diff
changeset
|
2968 wp = find_popup_win(id); |
17123
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
2969 if (wp == NULL) |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
2970 return; // invalid {id} |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
2971 |
29994
86eb4aba16c3
patch 9.0.0335: checks for Dictionary argument often give a vague error
Bram Moolenaar <Bram@vim.org>
parents:
29966
diff
changeset
|
2972 if (check_for_nonnull_dict_arg(argvars, 1) == FAIL) |
17123
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
2973 return; |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
2974 dict = argvars[1].vval.v_dict; |
17180
8581779aa16f
patch 8.1.1589: popup window does not indicate scroll position
Bram Moolenaar <Bram@vim.org>
parents:
17174
diff
changeset
|
2975 old_firstline = wp->w_firstline; |
17123
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
2976 |
22403
3351d2cd3f1f
patch 8.2.1750: popup_setoptions() setting firstline fails if cursorline set
Bram Moolenaar <Bram@vim.org>
parents:
22377
diff
changeset
|
2977 apply_options(wp, dict, FALSE); |
17123
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
2978 |
17180
8581779aa16f
patch 8.1.1589: popup window does not indicate scroll position
Bram Moolenaar <Bram@vim.org>
parents:
17174
diff
changeset
|
2979 if (old_firstline != wp->w_firstline) |
29732
89e1d67814a9
patch 9.0.0206: redraw flags are not named specifically
Bram Moolenaar <Bram@vim.org>
parents:
29660
diff
changeset
|
2980 redraw_win_later(wp, UPD_NOT_VALID); |
17123
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
2981 popup_adjust_position(wp); |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
2982 } |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
2983 |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
2984 /* |
16855
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
2985 * popup_getpos({id}) |
16829
5cebaecad422
patch 8.1.1416: popup_getposition() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16817
diff
changeset
|
2986 */ |
5cebaecad422
patch 8.1.1416: popup_getposition() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16817
diff
changeset
|
2987 void |
16855
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
2988 f_popup_getpos(typval_T *argvars, typval_T *rettv) |
16829
5cebaecad422
patch 8.1.1416: popup_getposition() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16817
diff
changeset
|
2989 { |
5cebaecad422
patch 8.1.1416: popup_getposition() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16817
diff
changeset
|
2990 dict_T *dict; |
25384
e8e2c4d33b9b
patch 8.2.3229: Vim9: runtime and compile time type checks are not the same
Bram Moolenaar <Bram@vim.org>
parents:
25368
diff
changeset
|
2991 int id; |
e8e2c4d33b9b
patch 8.2.3229: Vim9: runtime and compile time type checks are not the same
Bram Moolenaar <Bram@vim.org>
parents:
25368
diff
changeset
|
2992 win_T *wp; |
16884
59e4148c0c73
patch 8.1.1443: popup window padding and border not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16880
diff
changeset
|
2993 int top_extra; |
59e4148c0c73
patch 8.1.1443: popup window padding and border not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16880
diff
changeset
|
2994 int left_extra; |
16829
5cebaecad422
patch 8.1.1416: popup_getposition() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16817
diff
changeset
|
2995 |
5cebaecad422
patch 8.1.1416: popup_getposition() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16817
diff
changeset
|
2996 if (rettv_dict_alloc(rettv) == OK) |
5cebaecad422
patch 8.1.1416: popup_getposition() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16817
diff
changeset
|
2997 { |
25384
e8e2c4d33b9b
patch 8.2.3229: Vim9: runtime and compile time type checks are not the same
Bram Moolenaar <Bram@vim.org>
parents:
25368
diff
changeset
|
2998 if (in_vim9script() && check_for_number_arg(argvars, 0) == FAIL) |
e8e2c4d33b9b
patch 8.2.3229: Vim9: runtime and compile time type checks are not the same
Bram Moolenaar <Bram@vim.org>
parents:
25368
diff
changeset
|
2999 return; |
e8e2c4d33b9b
patch 8.2.3229: Vim9: runtime and compile time type checks are not the same
Bram Moolenaar <Bram@vim.org>
parents:
25368
diff
changeset
|
3000 |
e8e2c4d33b9b
patch 8.2.3229: Vim9: runtime and compile time type checks are not the same
Bram Moolenaar <Bram@vim.org>
parents:
25368
diff
changeset
|
3001 id = (int)tv_get_number(argvars); |
e8e2c4d33b9b
patch 8.2.3229: Vim9: runtime and compile time type checks are not the same
Bram Moolenaar <Bram@vim.org>
parents:
25368
diff
changeset
|
3002 wp = find_popup_win(id); |
16829
5cebaecad422
patch 8.1.1416: popup_getposition() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16817
diff
changeset
|
3003 if (wp == NULL) |
5cebaecad422
patch 8.1.1416: popup_getposition() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16817
diff
changeset
|
3004 return; // invalid {id} |
17119
b439e096a011
patch 8.1.1559: popup window title property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17117
diff
changeset
|
3005 top_extra = popup_top_extra(wp); |
16884
59e4148c0c73
patch 8.1.1443: popup window padding and border not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16880
diff
changeset
|
3006 left_extra = wp->w_popup_border[3] + wp->w_popup_padding[3]; |
59e4148c0c73
patch 8.1.1443: popup window padding and border not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16880
diff
changeset
|
3007 |
17508
34966be2e856
patch 8.1.1752: resizing hashtable is inefficient
Bram Moolenaar <Bram@vim.org>
parents:
17506
diff
changeset
|
3008 // we know how much space we need, avoid resizing halfway |
16829
5cebaecad422
patch 8.1.1416: popup_getposition() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16817
diff
changeset
|
3009 dict = rettv->vval.v_dict; |
17508
34966be2e856
patch 8.1.1752: resizing hashtable is inefficient
Bram Moolenaar <Bram@vim.org>
parents:
17506
diff
changeset
|
3010 hash_lock_size(&dict->dv_hashtab, 11); |
16884
59e4148c0c73
patch 8.1.1443: popup window padding and border not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16880
diff
changeset
|
3011 |
16829
5cebaecad422
patch 8.1.1416: popup_getposition() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16817
diff
changeset
|
3012 dict_add_number(dict, "line", wp->w_winrow + 1); |
5cebaecad422
patch 8.1.1416: popup_getposition() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16817
diff
changeset
|
3013 dict_add_number(dict, "col", wp->w_wincol + 1); |
17045
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
3014 dict_add_number(dict, "width", wp->w_width + left_extra |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
3015 + wp->w_popup_border[1] + wp->w_popup_padding[1]); |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
3016 dict_add_number(dict, "height", wp->w_height + top_extra |
7fe328ad5573
patch 8.1.1522: poup_notification() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17041
diff
changeset
|
3017 + wp->w_popup_border[2] + wp->w_popup_padding[2]); |
16884
59e4148c0c73
patch 8.1.1443: popup window padding and border not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16880
diff
changeset
|
3018 |
59e4148c0c73
patch 8.1.1443: popup window padding and border not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16880
diff
changeset
|
3019 dict_add_number(dict, "core_line", wp->w_winrow + 1 + top_extra); |
59e4148c0c73
patch 8.1.1443: popup window padding and border not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16880
diff
changeset
|
3020 dict_add_number(dict, "core_col", wp->w_wincol + 1 + left_extra); |
59e4148c0c73
patch 8.1.1443: popup window padding and border not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16880
diff
changeset
|
3021 dict_add_number(dict, "core_width", wp->w_width); |
59e4148c0c73
patch 8.1.1443: popup window padding and border not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16880
diff
changeset
|
3022 dict_add_number(dict, "core_height", wp->w_height); |
59e4148c0c73
patch 8.1.1443: popup window padding and border not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16880
diff
changeset
|
3023 |
17180
8581779aa16f
patch 8.1.1589: popup window does not indicate scroll position
Bram Moolenaar <Bram@vim.org>
parents:
17174
diff
changeset
|
3024 dict_add_number(dict, "scrollbar", wp->w_has_scrollbar); |
17196
983950357c40
patch 8.1.1597: cannot scroll a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17194
diff
changeset
|
3025 dict_add_number(dict, "firstline", wp->w_topline); |
18512
e855058e0c23
patch 8.1.2250: CTRL-U and CTRL-D don't work in popup window
Bram Moolenaar <Bram@vim.org>
parents:
18492
diff
changeset
|
3026 dict_add_number(dict, "lastline", wp->w_botline - 1); |
16841
cf630fab9fb6
patch 8.1.1422: popup_getoptions() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16839
diff
changeset
|
3027 dict_add_number(dict, "visible", |
16902
23645f9a5ce2
patch 8.1.1452: line and col property of popup windows not properly checked
Bram Moolenaar <Bram@vim.org>
parents:
16898
diff
changeset
|
3028 win_valid(wp) && (wp->w_popup_flags & POPF_HIDDEN) == 0); |
17508
34966be2e856
patch 8.1.1752: resizing hashtable is inefficient
Bram Moolenaar <Bram@vim.org>
parents:
17506
diff
changeset
|
3029 |
34966be2e856
patch 8.1.1752: resizing hashtable is inefficient
Bram Moolenaar <Bram@vim.org>
parents:
17506
diff
changeset
|
3030 hash_unlock(&dict->dv_hashtab); |
16841
cf630fab9fb6
patch 8.1.1422: popup_getoptions() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16839
diff
changeset
|
3031 } |
cf630fab9fb6
patch 8.1.1422: popup_getoptions() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16839
diff
changeset
|
3032 } |
20386
3b3589275ab9
patch 8.2.0748: cannot get a list of all popups
Bram Moolenaar <Bram@vim.org>
parents:
20384
diff
changeset
|
3033 |
3b3589275ab9
patch 8.2.0748: cannot get a list of all popups
Bram Moolenaar <Bram@vim.org>
parents:
20384
diff
changeset
|
3034 /* |
3b3589275ab9
patch 8.2.0748: cannot get a list of all popups
Bram Moolenaar <Bram@vim.org>
parents:
20384
diff
changeset
|
3035 * popup_list() |
3b3589275ab9
patch 8.2.0748: cannot get a list of all popups
Bram Moolenaar <Bram@vim.org>
parents:
20384
diff
changeset
|
3036 */ |
3b3589275ab9
patch 8.2.0748: cannot get a list of all popups
Bram Moolenaar <Bram@vim.org>
parents:
20384
diff
changeset
|
3037 void |
3b3589275ab9
patch 8.2.0748: cannot get a list of all popups
Bram Moolenaar <Bram@vim.org>
parents:
20384
diff
changeset
|
3038 f_popup_list(typval_T *argvars UNUSED, typval_T *rettv) |
3b3589275ab9
patch 8.2.0748: cannot get a list of all popups
Bram Moolenaar <Bram@vim.org>
parents:
20384
diff
changeset
|
3039 { |
3b3589275ab9
patch 8.2.0748: cannot get a list of all popups
Bram Moolenaar <Bram@vim.org>
parents:
20384
diff
changeset
|
3040 win_T *wp; |
3b3589275ab9
patch 8.2.0748: cannot get a list of all popups
Bram Moolenaar <Bram@vim.org>
parents:
20384
diff
changeset
|
3041 tabpage_T *tp; |
3b3589275ab9
patch 8.2.0748: cannot get a list of all popups
Bram Moolenaar <Bram@vim.org>
parents:
20384
diff
changeset
|
3042 |
29239
da56650de132
patch 8.2.5138: various small issues
Bram Moolenaar <Bram@vim.org>
parents:
29046
diff
changeset
|
3043 if (rettv_list_alloc(rettv) == FAIL) |
20386
3b3589275ab9
patch 8.2.0748: cannot get a list of all popups
Bram Moolenaar <Bram@vim.org>
parents:
20384
diff
changeset
|
3044 return; |
3b3589275ab9
patch 8.2.0748: cannot get a list of all popups
Bram Moolenaar <Bram@vim.org>
parents:
20384
diff
changeset
|
3045 FOR_ALL_POPUPWINS(wp) |
3b3589275ab9
patch 8.2.0748: cannot get a list of all popups
Bram Moolenaar <Bram@vim.org>
parents:
20384
diff
changeset
|
3046 list_append_number(rettv->vval.v_list, wp->w_id); |
3b3589275ab9
patch 8.2.0748: cannot get a list of all popups
Bram Moolenaar <Bram@vim.org>
parents:
20384
diff
changeset
|
3047 FOR_ALL_TABPAGES(tp) |
3b3589275ab9
patch 8.2.0748: cannot get a list of all popups
Bram Moolenaar <Bram@vim.org>
parents:
20384
diff
changeset
|
3048 FOR_ALL_POPUPWINS_IN_TAB(tp, wp) |
3b3589275ab9
patch 8.2.0748: cannot get a list of all popups
Bram Moolenaar <Bram@vim.org>
parents:
20384
diff
changeset
|
3049 list_append_number(rettv->vval.v_list, wp->w_id); |
3b3589275ab9
patch 8.2.0748: cannot get a list of all popups
Bram Moolenaar <Bram@vim.org>
parents:
20384
diff
changeset
|
3050 } |
3b3589275ab9
patch 8.2.0748: cannot get a list of all popups
Bram Moolenaar <Bram@vim.org>
parents:
20384
diff
changeset
|
3051 |
17348
d82b0cfb1e82
patch 8.1.1673: cannot easily find the popup window at a certain position
Bram Moolenaar <Bram@vim.org>
parents:
17334
diff
changeset
|
3052 /* |
d82b0cfb1e82
patch 8.1.1673: cannot easily find the popup window at a certain position
Bram Moolenaar <Bram@vim.org>
parents:
17334
diff
changeset
|
3053 * popup_locate({row}, {col}) |
d82b0cfb1e82
patch 8.1.1673: cannot easily find the popup window at a certain position
Bram Moolenaar <Bram@vim.org>
parents:
17334
diff
changeset
|
3054 */ |
d82b0cfb1e82
patch 8.1.1673: cannot easily find the popup window at a certain position
Bram Moolenaar <Bram@vim.org>
parents:
17334
diff
changeset
|
3055 void |
d82b0cfb1e82
patch 8.1.1673: cannot easily find the popup window at a certain position
Bram Moolenaar <Bram@vim.org>
parents:
17334
diff
changeset
|
3056 f_popup_locate(typval_T *argvars, typval_T *rettv) |
d82b0cfb1e82
patch 8.1.1673: cannot easily find the popup window at a certain position
Bram Moolenaar <Bram@vim.org>
parents:
17334
diff
changeset
|
3057 { |
25384
e8e2c4d33b9b
patch 8.2.3229: Vim9: runtime and compile time type checks are not the same
Bram Moolenaar <Bram@vim.org>
parents:
25368
diff
changeset
|
3058 int row; |
e8e2c4d33b9b
patch 8.2.3229: Vim9: runtime and compile time type checks are not the same
Bram Moolenaar <Bram@vim.org>
parents:
25368
diff
changeset
|
3059 int col; |
17348
d82b0cfb1e82
patch 8.1.1673: cannot easily find the popup window at a certain position
Bram Moolenaar <Bram@vim.org>
parents:
17334
diff
changeset
|
3060 win_T *wp; |
d82b0cfb1e82
patch 8.1.1673: cannot easily find the popup window at a certain position
Bram Moolenaar <Bram@vim.org>
parents:
17334
diff
changeset
|
3061 |
25384
e8e2c4d33b9b
patch 8.2.3229: Vim9: runtime and compile time type checks are not the same
Bram Moolenaar <Bram@vim.org>
parents:
25368
diff
changeset
|
3062 if (in_vim9script() |
e8e2c4d33b9b
patch 8.2.3229: Vim9: runtime and compile time type checks are not the same
Bram Moolenaar <Bram@vim.org>
parents:
25368
diff
changeset
|
3063 && (check_for_number_arg(argvars, 0) == FAIL |
e8e2c4d33b9b
patch 8.2.3229: Vim9: runtime and compile time type checks are not the same
Bram Moolenaar <Bram@vim.org>
parents:
25368
diff
changeset
|
3064 || check_for_number_arg(argvars, 1) == FAIL)) |
e8e2c4d33b9b
patch 8.2.3229: Vim9: runtime and compile time type checks are not the same
Bram Moolenaar <Bram@vim.org>
parents:
25368
diff
changeset
|
3065 return; |
e8e2c4d33b9b
patch 8.2.3229: Vim9: runtime and compile time type checks are not the same
Bram Moolenaar <Bram@vim.org>
parents:
25368
diff
changeset
|
3066 |
e8e2c4d33b9b
patch 8.2.3229: Vim9: runtime and compile time type checks are not the same
Bram Moolenaar <Bram@vim.org>
parents:
25368
diff
changeset
|
3067 row = tv_get_number(&argvars[0]) - 1; |
e8e2c4d33b9b
patch 8.2.3229: Vim9: runtime and compile time type checks are not the same
Bram Moolenaar <Bram@vim.org>
parents:
25368
diff
changeset
|
3068 col = tv_get_number(&argvars[1]) - 1; |
17348
d82b0cfb1e82
patch 8.1.1673: cannot easily find the popup window at a certain position
Bram Moolenaar <Bram@vim.org>
parents:
17334
diff
changeset
|
3069 wp = mouse_find_win(&row, &col, FIND_POPUP); |
18685
ff4174f1ed3a
patch 8.1.2334: possible NULL pointer dereference in popup_locate()
Bram Moolenaar <Bram@vim.org>
parents:
18629
diff
changeset
|
3070 if (wp != NULL && WIN_IS_POPUP(wp)) |
17348
d82b0cfb1e82
patch 8.1.1673: cannot easily find the popup window at a certain position
Bram Moolenaar <Bram@vim.org>
parents:
17334
diff
changeset
|
3071 rettv->vval.v_number = wp->w_id; |
d82b0cfb1e82
patch 8.1.1673: cannot easily find the popup window at a certain position
Bram Moolenaar <Bram@vim.org>
parents:
17334
diff
changeset
|
3072 } |
16841
cf630fab9fb6
patch 8.1.1422: popup_getoptions() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16839
diff
changeset
|
3073 |
cf630fab9fb6
patch 8.1.1422: popup_getoptions() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16839
diff
changeset
|
3074 /* |
17123
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3075 * For popup_getoptions(): add a "border" or "padding" entry to "dict". |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3076 */ |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3077 static void |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3078 get_padding_border(dict_T *dict, int *array, char *name) |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3079 { |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3080 list_T *list; |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3081 int i; |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3082 |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3083 if (array[0] == 0 && array[1] == 0 && array[2] == 0 && array[3] == 0) |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3084 return; |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3085 |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3086 list = list_alloc(); |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3087 if (list != NULL) |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3088 { |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3089 dict_add_list(dict, name, list); |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3090 if (array[0] != 1 || array[1] != 1 || array[2] != 1 || array[3] != 1) |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3091 for (i = 0; i < 4; ++i) |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3092 list_append_number(list, array[i]); |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3093 } |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3094 } |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3095 |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3096 /* |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3097 * For popup_getoptions(): add a "borderhighlight" entry to "dict". |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3098 */ |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3099 static void |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3100 get_borderhighlight(dict_T *dict, win_T *wp) |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3101 { |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3102 list_T *list; |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3103 int i; |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3104 |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3105 for (i = 0; i < 4; ++i) |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3106 if (wp->w_border_highlight[i] != NULL) |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3107 break; |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3108 if (i == 4) |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3109 return; |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3110 |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3111 list = list_alloc(); |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3112 if (list != NULL) |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3113 { |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3114 dict_add_list(dict, "borderhighlight", list); |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3115 for (i = 0; i < 4; ++i) |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3116 list_append_string(list, wp->w_border_highlight[i], -1); |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3117 } |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3118 } |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3119 |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3120 /* |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3121 * For popup_getoptions(): add a "borderchars" entry to "dict". |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3122 */ |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3123 static void |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3124 get_borderchars(dict_T *dict, win_T *wp) |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3125 { |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3126 list_T *list; |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3127 int i; |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3128 char_u buf[NUMBUFLEN]; |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3129 int len; |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3130 |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3131 for (i = 0; i < 8; ++i) |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3132 if (wp->w_border_char[i] != 0) |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3133 break; |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3134 if (i == 8) |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3135 return; |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3136 |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3137 list = list_alloc(); |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3138 if (list != NULL) |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3139 { |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3140 dict_add_list(dict, "borderchars", list); |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3141 for (i = 0; i < 8; ++i) |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3142 { |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3143 len = mb_char2bytes(wp->w_border_char[i], buf); |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3144 list_append_string(list, buf, len); |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3145 } |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3146 } |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3147 } |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3148 |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3149 /* |
17292
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
3150 * For popup_getoptions(): add a "moved" and "mousemoved" entry to "dict". |
17123
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3151 */ |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3152 static void |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3153 get_moved_list(dict_T *dict, win_T *wp) |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3154 { |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3155 list_T *list; |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3156 |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3157 list = list_alloc(); |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3158 if (list != NULL) |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3159 { |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3160 dict_add_list(dict, "moved", list); |
17292
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
3161 list_append_number(list, wp->w_popup_lnum); |
17123
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3162 list_append_number(list, wp->w_popup_mincol); |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3163 list_append_number(list, wp->w_popup_maxcol); |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3164 } |
17292
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
3165 list = list_alloc(); |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
3166 if (list != NULL) |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
3167 { |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
3168 dict_add_list(dict, "mousemoved", list); |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
3169 list_append_number(list, wp->w_popup_mouse_row); |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
3170 list_append_number(list, wp->w_popup_mouse_mincol); |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
3171 list_append_number(list, wp->w_popup_mouse_maxcol); |
8a095d343c59
patch 8.1.1645: cannot use a popup window for a balloon
Bram Moolenaar <Bram@vim.org>
parents:
17274
diff
changeset
|
3172 } |
17123
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3173 } |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3174 |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3175 /* |
16986
03f3a9ca2770
patch 8.1.1493: redrawing with popups is slow and causes flicker
Bram Moolenaar <Bram@vim.org>
parents:
16908
diff
changeset
|
3176 * popup_getoptions({id}) |
16841
cf630fab9fb6
patch 8.1.1422: popup_getoptions() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16839
diff
changeset
|
3177 */ |
cf630fab9fb6
patch 8.1.1422: popup_getoptions() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16839
diff
changeset
|
3178 void |
cf630fab9fb6
patch 8.1.1422: popup_getoptions() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16839
diff
changeset
|
3179 f_popup_getoptions(typval_T *argvars, typval_T *rettv) |
cf630fab9fb6
patch 8.1.1422: popup_getoptions() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16839
diff
changeset
|
3180 { |
cf630fab9fb6
patch 8.1.1422: popup_getoptions() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16839
diff
changeset
|
3181 dict_T *dict; |
25384
e8e2c4d33b9b
patch 8.2.3229: Vim9: runtime and compile time type checks are not the same
Bram Moolenaar <Bram@vim.org>
parents:
25368
diff
changeset
|
3182 int id; |
e8e2c4d33b9b
patch 8.2.3229: Vim9: runtime and compile time type checks are not the same
Bram Moolenaar <Bram@vim.org>
parents:
25368
diff
changeset
|
3183 win_T *wp; |
17149
c90fdb999393
patch 8.1.1574: tabpage option not yet implemented for popup window
Bram Moolenaar <Bram@vim.org>
parents:
17125
diff
changeset
|
3184 tabpage_T *tp; |
16855
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
3185 int i; |
16841
cf630fab9fb6
patch 8.1.1422: popup_getoptions() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16839
diff
changeset
|
3186 |
cf630fab9fb6
patch 8.1.1422: popup_getoptions() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16839
diff
changeset
|
3187 if (rettv_dict_alloc(rettv) == OK) |
cf630fab9fb6
patch 8.1.1422: popup_getoptions() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16839
diff
changeset
|
3188 { |
25384
e8e2c4d33b9b
patch 8.2.3229: Vim9: runtime and compile time type checks are not the same
Bram Moolenaar <Bram@vim.org>
parents:
25368
diff
changeset
|
3189 if (in_vim9script() && check_for_number_arg(argvars, 0) == FAIL) |
e8e2c4d33b9b
patch 8.2.3229: Vim9: runtime and compile time type checks are not the same
Bram Moolenaar <Bram@vim.org>
parents:
25368
diff
changeset
|
3190 return; |
e8e2c4d33b9b
patch 8.2.3229: Vim9: runtime and compile time type checks are not the same
Bram Moolenaar <Bram@vim.org>
parents:
25368
diff
changeset
|
3191 |
e8e2c4d33b9b
patch 8.2.3229: Vim9: runtime and compile time type checks are not the same
Bram Moolenaar <Bram@vim.org>
parents:
25368
diff
changeset
|
3192 id = (int)tv_get_number(argvars); |
e8e2c4d33b9b
patch 8.2.3229: Vim9: runtime and compile time type checks are not the same
Bram Moolenaar <Bram@vim.org>
parents:
25368
diff
changeset
|
3193 wp = find_popup_win(id); |
16841
cf630fab9fb6
patch 8.1.1422: popup_getoptions() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16839
diff
changeset
|
3194 if (wp == NULL) |
cf630fab9fb6
patch 8.1.1422: popup_getoptions() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16839
diff
changeset
|
3195 return; |
cf630fab9fb6
patch 8.1.1422: popup_getoptions() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16839
diff
changeset
|
3196 |
cf630fab9fb6
patch 8.1.1422: popup_getoptions() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16839
diff
changeset
|
3197 dict = rettv->vval.v_dict; |
cf630fab9fb6
patch 8.1.1422: popup_getoptions() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16839
diff
changeset
|
3198 dict_add_number(dict, "line", wp->w_wantline); |
cf630fab9fb6
patch 8.1.1422: popup_getoptions() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16839
diff
changeset
|
3199 dict_add_number(dict, "col", wp->w_wantcol); |
cf630fab9fb6
patch 8.1.1422: popup_getoptions() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16839
diff
changeset
|
3200 dict_add_number(dict, "minwidth", wp->w_minwidth); |
cf630fab9fb6
patch 8.1.1422: popup_getoptions() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16839
diff
changeset
|
3201 dict_add_number(dict, "minheight", wp->w_minheight); |
cf630fab9fb6
patch 8.1.1422: popup_getoptions() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16839
diff
changeset
|
3202 dict_add_number(dict, "maxheight", wp->w_maxheight); |
cf630fab9fb6
patch 8.1.1422: popup_getoptions() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16839
diff
changeset
|
3203 dict_add_number(dict, "maxwidth", wp->w_maxwidth); |
17047
6400d1ad5e4b
patch 8.1.1523: cannot show range of buffer lines in popup window
Bram Moolenaar <Bram@vim.org>
parents:
17045
diff
changeset
|
3204 dict_add_number(dict, "firstline", wp->w_firstline); |
17180
8581779aa16f
patch 8.1.1589: popup window does not indicate scroll position
Bram Moolenaar <Bram@vim.org>
parents:
17174
diff
changeset
|
3205 dict_add_number(dict, "scrollbar", wp->w_want_scrollbar); |
16841
cf630fab9fb6
patch 8.1.1422: popup_getoptions() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16839
diff
changeset
|
3206 dict_add_number(dict, "zindex", wp->w_zindex); |
16896
52fc577a087d
patch 8.1.1449: popup text truncated at end of screen
Bram Moolenaar <Bram@vim.org>
parents:
16892
diff
changeset
|
3207 dict_add_number(dict, "fixed", wp->w_popup_fixed); |
23857
16a19892e22e
patch 8.2.2470: popup_getoptions() does not get textprop from other tab
Bram Moolenaar <Bram@vim.org>
parents:
23507
diff
changeset
|
3208 if (wp->w_popup_prop_type && win_valid_any_tab(wp->w_popup_prop_win)) |
17863
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3209 { |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3210 proptype_T *pt = text_prop_type_by_id( |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3211 wp->w_popup_prop_win->w_buffer, |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3212 wp->w_popup_prop_type); |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3213 |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3214 if (pt != NULL) |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3215 dict_add_string(dict, "textprop", pt->pt_name); |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3216 dict_add_number(dict, "textpropwin", wp->w_popup_prop_win->w_id); |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3217 dict_add_number(dict, "textpropid", wp->w_popup_prop_id); |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3218 } |
17123
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3219 dict_add_string(dict, "title", wp->w_popup_title); |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3220 dict_add_number(dict, "wrap", wp->w_p_wrap); |
17580
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
3221 dict_add_number(dict, "drag", (wp->w_popup_flags & POPF_DRAG) != 0); |
26332
8b7f01b39d79
patch 8.2.3697: cannot drag a popup without a border
Bram Moolenaar <Bram@vim.org>
parents:
26266
diff
changeset
|
3222 dict_add_number(dict, "dragall", |
8b7f01b39d79
patch 8.2.3697: cannot drag a popup without a border
Bram Moolenaar <Bram@vim.org>
parents:
26266
diff
changeset
|
3223 (wp->w_popup_flags & POPF_DRAGALL) != 0); |
17863
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3224 dict_add_number(dict, "mapping", |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3225 (wp->w_popup_flags & POPF_MAPPING) != 0); |
17580
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
3226 dict_add_number(dict, "resize", (wp->w_popup_flags & POPF_RESIZE) != 0); |
18542
244b336b94ce
patch 8.1.2265: when popup with "botleft" does not fit it flips incorrectly
Bram Moolenaar <Bram@vim.org>
parents:
18512
diff
changeset
|
3227 dict_add_number(dict, "posinvert", |
244b336b94ce
patch 8.1.2265: when popup with "botleft" does not fit it flips incorrectly
Bram Moolenaar <Bram@vim.org>
parents:
18512
diff
changeset
|
3228 (wp->w_popup_flags & POPF_POSINVERT) != 0); |
17440
a5874fdc8f3a
patch 8.1.1718: popup menu highlighting does not look good
Bram Moolenaar <Bram@vim.org>
parents:
17431
diff
changeset
|
3229 dict_add_number(dict, "cursorline", |
a5874fdc8f3a
patch 8.1.1718: popup menu highlighting does not look good
Bram Moolenaar <Bram@vim.org>
parents:
17431
diff
changeset
|
3230 (wp->w_popup_flags & POPF_CURSORLINE) != 0); |
17123
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3231 dict_add_string(dict, "highlight", wp->w_p_wcr); |
17202
4b40e8821f56
patch 8.1.1600: cannot specify highlighting for popup window scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
17200
diff
changeset
|
3232 if (wp->w_scrollbar_highlight != NULL) |
4b40e8821f56
patch 8.1.1600: cannot specify highlighting for popup window scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
17200
diff
changeset
|
3233 dict_add_string(dict, "scrollbarhighlight", |
4b40e8821f56
patch 8.1.1600: cannot specify highlighting for popup window scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
17200
diff
changeset
|
3234 wp->w_scrollbar_highlight); |
4b40e8821f56
patch 8.1.1600: cannot specify highlighting for popup window scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
17200
diff
changeset
|
3235 if (wp->w_thumb_highlight != NULL) |
4b40e8821f56
patch 8.1.1600: cannot specify highlighting for popup window scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
17200
diff
changeset
|
3236 dict_add_string(dict, "thumbhighlight", wp->w_thumb_highlight); |
17123
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3237 |
17149
c90fdb999393
patch 8.1.1574: tabpage option not yet implemented for popup window
Bram Moolenaar <Bram@vim.org>
parents:
17125
diff
changeset
|
3238 // find the tabpage that holds this popup |
c90fdb999393
patch 8.1.1574: tabpage option not yet implemented for popup window
Bram Moolenaar <Bram@vim.org>
parents:
17125
diff
changeset
|
3239 i = 1; |
c90fdb999393
patch 8.1.1574: tabpage option not yet implemented for popup window
Bram Moolenaar <Bram@vim.org>
parents:
17125
diff
changeset
|
3240 FOR_ALL_TABPAGES(tp) |
c90fdb999393
patch 8.1.1574: tabpage option not yet implemented for popup window
Bram Moolenaar <Bram@vim.org>
parents:
17125
diff
changeset
|
3241 { |
18229
e6c83ae0c4d0
patch 8.1.2109: popup_getoptions() hangs with tab-local popup
Bram Moolenaar <Bram@vim.org>
parents:
18225
diff
changeset
|
3242 win_T *twp; |
e6c83ae0c4d0
patch 8.1.2109: popup_getoptions() hangs with tab-local popup
Bram Moolenaar <Bram@vim.org>
parents:
18225
diff
changeset
|
3243 |
19888
435726a03481
patch 8.2.0500: using the same loop in many places
Bram Moolenaar <Bram@vim.org>
parents:
19647
diff
changeset
|
3244 FOR_ALL_POPUPWINS_IN_TAB(tp, twp) |
435726a03481
patch 8.2.0500: using the same loop in many places
Bram Moolenaar <Bram@vim.org>
parents:
19647
diff
changeset
|
3245 if (twp->w_id == id) |
435726a03481
patch 8.2.0500: using the same loop in many places
Bram Moolenaar <Bram@vim.org>
parents:
19647
diff
changeset
|
3246 break; |
435726a03481
patch 8.2.0500: using the same loop in many places
Bram Moolenaar <Bram@vim.org>
parents:
19647
diff
changeset
|
3247 if (twp != NULL) |
435726a03481
patch 8.2.0500: using the same loop in many places
Bram Moolenaar <Bram@vim.org>
parents:
19647
diff
changeset
|
3248 break; |
435726a03481
patch 8.2.0500: using the same loop in many places
Bram Moolenaar <Bram@vim.org>
parents:
19647
diff
changeset
|
3249 ++i; |
17149
c90fdb999393
patch 8.1.1574: tabpage option not yet implemented for popup window
Bram Moolenaar <Bram@vim.org>
parents:
17125
diff
changeset
|
3250 } |
c90fdb999393
patch 8.1.1574: tabpage option not yet implemented for popup window
Bram Moolenaar <Bram@vim.org>
parents:
17125
diff
changeset
|
3251 if (tp == NULL) |
c90fdb999393
patch 8.1.1574: tabpage option not yet implemented for popup window
Bram Moolenaar <Bram@vim.org>
parents:
17125
diff
changeset
|
3252 i = -1; // must be global |
c90fdb999393
patch 8.1.1574: tabpage option not yet implemented for popup window
Bram Moolenaar <Bram@vim.org>
parents:
17125
diff
changeset
|
3253 else if (tp == curtab) |
c90fdb999393
patch 8.1.1574: tabpage option not yet implemented for popup window
Bram Moolenaar <Bram@vim.org>
parents:
17125
diff
changeset
|
3254 i = 0; |
c90fdb999393
patch 8.1.1574: tabpage option not yet implemented for popup window
Bram Moolenaar <Bram@vim.org>
parents:
17125
diff
changeset
|
3255 dict_add_number(dict, "tabpage", i); |
c90fdb999393
patch 8.1.1574: tabpage option not yet implemented for popup window
Bram Moolenaar <Bram@vim.org>
parents:
17125
diff
changeset
|
3256 |
17123
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3257 get_padding_border(dict, wp->w_popup_padding, "padding"); |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3258 get_padding_border(dict, wp->w_popup_border, "border"); |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3259 get_borderhighlight(dict, wp); |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3260 get_borderchars(dict, wp); |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3261 get_moved_list(dict, wp); |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3262 |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3263 if (wp->w_filter_cb.cb_name != NULL) |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3264 dict_add_callback(dict, "filter", &wp->w_filter_cb); |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3265 if (wp->w_close_cb.cb_name != NULL) |
efc6f5e3b543
patch 8.1.1561: popup_setoptions() is not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17121
diff
changeset
|
3266 dict_add_callback(dict, "callback", &wp->w_close_cb); |
16855
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
3267 |
24768
7334bf933510
patch 8.2.2922: computing array length is done in various ways
Bram Moolenaar <Bram@vim.org>
parents:
24709
diff
changeset
|
3268 for (i = 0; i < (int)ARRAY_LENGTH(poppos_entries); ++i) |
16855
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
3269 if (wp->w_popup_pos == poppos_entries[i].pp_val) |
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
3270 { |
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
3271 dict_add_string(dict, "pos", |
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
3272 (char_u *)poppos_entries[i].pp_name); |
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
3273 break; |
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
3274 } |
19162ff4eacd
patch 8.1.1429: "pos" option of popup window not supported yet
Bram Moolenaar <Bram@vim.org>
parents:
16853
diff
changeset
|
3275 |
17219
5169811b3044
patch 8.1.1609: the user cannot easily close a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17216
diff
changeset
|
3276 dict_add_string(dict, "close", (char_u *)( |
5169811b3044
patch 8.1.1609: the user cannot easily close a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17216
diff
changeset
|
3277 wp->w_popup_close == POPCLOSE_BUTTON ? "button" |
5169811b3044
patch 8.1.1609: the user cannot easily close a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17216
diff
changeset
|
3278 : wp->w_popup_close == POPCLOSE_CLICK ? "click" : "none")); |
5169811b3044
patch 8.1.1609: the user cannot easily close a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17216
diff
changeset
|
3279 |
16841
cf630fab9fb6
patch 8.1.1422: popup_getoptions() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16839
diff
changeset
|
3280 # if defined(FEAT_TIMERS) |
cf630fab9fb6
patch 8.1.1422: popup_getoptions() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16839
diff
changeset
|
3281 dict_add_number(dict, "time", wp->w_popup_timer != NULL |
cf630fab9fb6
patch 8.1.1422: popup_getoptions() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16839
diff
changeset
|
3282 ? (long)wp->w_popup_timer->tr_interval : 0L); |
cf630fab9fb6
patch 8.1.1422: popup_getoptions() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16839
diff
changeset
|
3283 # endif |
16829
5cebaecad422
patch 8.1.1416: popup_getposition() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16817
diff
changeset
|
3284 } |
5cebaecad422
patch 8.1.1416: popup_getposition() not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16817
diff
changeset
|
3285 } |
16874
da5f5836e90c
patch 8.1.1438: some commands cause trouble in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
16872
diff
changeset
|
3286 |
19267
c7903f92ed75
patch 8.2.0192: build failure without +terminal feature
Bram Moolenaar <Bram@vim.org>
parents:
19265
diff
changeset
|
3287 # if defined(FEAT_TERMINAL) || defined(PROTO) |
19275
2142fb624658
patch 8.2.0196: blocking commands for a finished job in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
19271
diff
changeset
|
3288 /* |
2142fb624658
patch 8.2.0196: blocking commands for a finished job in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
19271
diff
changeset
|
3289 * Return TRUE if the current window is running a terminal in a popup window. |
2142fb624658
patch 8.2.0196: blocking commands for a finished job in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
19271
diff
changeset
|
3290 * Return FALSE when the job has ended. |
2142fb624658
patch 8.2.0196: blocking commands for a finished job in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
19271
diff
changeset
|
3291 */ |
19265
ce8c47ed54e5
patch 8.2.0191: cannot put a terminal in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
19241
diff
changeset
|
3292 int |
ce8c47ed54e5
patch 8.2.0191: cannot put a terminal in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
19241
diff
changeset
|
3293 error_if_term_popup_window() |
ce8c47ed54e5
patch 8.2.0191: cannot put a terminal in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
19241
diff
changeset
|
3294 { |
19275
2142fb624658
patch 8.2.0196: blocking commands for a finished job in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
19271
diff
changeset
|
3295 if (WIN_IS_POPUP(curwin) && curbuf->b_term != NULL |
2142fb624658
patch 8.2.0196: blocking commands for a finished job in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
19271
diff
changeset
|
3296 && term_job_running(curbuf->b_term)) |
19265
ce8c47ed54e5
patch 8.2.0191: cannot put a terminal in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
19241
diff
changeset
|
3297 { |
26962
85866e069c24
patch 8.2.4010: error messages are spread out
Bram Moolenaar <Bram@vim.org>
parents:
26915
diff
changeset
|
3298 emsg(_(e_not_allowed_for_terminal_in_popup_window)); |
19265
ce8c47ed54e5
patch 8.2.0191: cannot put a terminal in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
19241
diff
changeset
|
3299 return TRUE; |
ce8c47ed54e5
patch 8.2.0191: cannot put a terminal in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
19241
diff
changeset
|
3300 } |
ce8c47ed54e5
patch 8.2.0191: cannot put a terminal in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
19241
diff
changeset
|
3301 return FALSE; |
ce8c47ed54e5
patch 8.2.0191: cannot put a terminal in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
19241
diff
changeset
|
3302 } |
19267
c7903f92ed75
patch 8.2.0192: build failure without +terminal feature
Bram Moolenaar <Bram@vim.org>
parents:
19265
diff
changeset
|
3303 # endif |
19265
ce8c47ed54e5
patch 8.2.0191: cannot put a terminal in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
19241
diff
changeset
|
3304 |
16880
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3305 /* |
18613
fa995154904e
patch 8.1.2300: redraw breaks going through list of popup windows
Bram Moolenaar <Bram@vim.org>
parents:
18597
diff
changeset
|
3306 * Reset all the "handled_flag" flags in global popup windows and popup windows |
17075
dacd46fbaa90
patch 8.1.1537: using "tab" for popup window can be confusing
Bram Moolenaar <Bram@vim.org>
parents:
17057
diff
changeset
|
3307 * in the current tab page. |
18613
fa995154904e
patch 8.1.2300: redraw breaks going through list of popup windows
Bram Moolenaar <Bram@vim.org>
parents:
18597
diff
changeset
|
3308 * Each calling function should use a different flag, see the list at |
fa995154904e
patch 8.1.2300: redraw breaks going through list of popup windows
Bram Moolenaar <Bram@vim.org>
parents:
18597
diff
changeset
|
3309 * POPUP_HANDLED_1. This won't work with recursive calls though. |
16880
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3310 */ |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3311 void |
18613
fa995154904e
patch 8.1.2300: redraw breaks going through list of popup windows
Bram Moolenaar <Bram@vim.org>
parents:
18597
diff
changeset
|
3312 popup_reset_handled(int handled_flag) |
16880
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3313 { |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3314 win_T *wp; |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3315 |
19888
435726a03481
patch 8.2.0500: using the same loop in many places
Bram Moolenaar <Bram@vim.org>
parents:
19647
diff
changeset
|
3316 FOR_ALL_POPUPWINS(wp) |
18613
fa995154904e
patch 8.1.2300: redraw breaks going through list of popup windows
Bram Moolenaar <Bram@vim.org>
parents:
18597
diff
changeset
|
3317 wp->w_popup_handled &= ~handled_flag; |
19888
435726a03481
patch 8.2.0500: using the same loop in many places
Bram Moolenaar <Bram@vim.org>
parents:
19647
diff
changeset
|
3318 FOR_ALL_POPUPWINS_IN_TAB(curtab, wp) |
18613
fa995154904e
patch 8.1.2300: redraw breaks going through list of popup windows
Bram Moolenaar <Bram@vim.org>
parents:
18597
diff
changeset
|
3319 wp->w_popup_handled &= ~handled_flag; |
16880
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3320 } |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3321 |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3322 /* |
18613
fa995154904e
patch 8.1.2300: redraw breaks going through list of popup windows
Bram Moolenaar <Bram@vim.org>
parents:
18597
diff
changeset
|
3323 * Find the next visible popup where "handled_flag" is not set. |
16880
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3324 * Must have called popup_reset_handled() first. |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3325 * When "lowest" is TRUE find the popup with the lowest zindex, otherwise the |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3326 * popup with the highest zindex. |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3327 */ |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3328 win_T * |
18613
fa995154904e
patch 8.1.2300: redraw breaks going through list of popup windows
Bram Moolenaar <Bram@vim.org>
parents:
18597
diff
changeset
|
3329 find_next_popup(int lowest, int handled_flag) |
16880
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3330 { |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3331 win_T *wp; |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3332 win_T *found_wp; |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3333 int found_zindex; |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3334 |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3335 found_zindex = lowest ? INT_MAX : 0; |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3336 found_wp = NULL; |
19888
435726a03481
patch 8.2.0500: using the same loop in many places
Bram Moolenaar <Bram@vim.org>
parents:
19647
diff
changeset
|
3337 FOR_ALL_POPUPWINS(wp) |
18613
fa995154904e
patch 8.1.2300: redraw breaks going through list of popup windows
Bram Moolenaar <Bram@vim.org>
parents:
18597
diff
changeset
|
3338 if ((wp->w_popup_handled & handled_flag) == 0 |
fa995154904e
patch 8.1.2300: redraw breaks going through list of popup windows
Bram Moolenaar <Bram@vim.org>
parents:
18597
diff
changeset
|
3339 && (wp->w_popup_flags & POPF_HIDDEN) == 0 |
16880
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3340 && (lowest ? wp->w_zindex < found_zindex |
18613
fa995154904e
patch 8.1.2300: redraw breaks going through list of popup windows
Bram Moolenaar <Bram@vim.org>
parents:
18597
diff
changeset
|
3341 : wp->w_zindex > found_zindex)) |
16880
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3342 { |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3343 found_zindex = wp->w_zindex; |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3344 found_wp = wp; |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3345 } |
19888
435726a03481
patch 8.2.0500: using the same loop in many places
Bram Moolenaar <Bram@vim.org>
parents:
19647
diff
changeset
|
3346 FOR_ALL_POPUPWINS_IN_TAB(curtab, wp) |
18613
fa995154904e
patch 8.1.2300: redraw breaks going through list of popup windows
Bram Moolenaar <Bram@vim.org>
parents:
18597
diff
changeset
|
3347 if ((wp->w_popup_handled & handled_flag) == 0 |
fa995154904e
patch 8.1.2300: redraw breaks going through list of popup windows
Bram Moolenaar <Bram@vim.org>
parents:
18597
diff
changeset
|
3348 && (wp->w_popup_flags & POPF_HIDDEN) == 0 |
16880
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3349 && (lowest ? wp->w_zindex < found_zindex |
18613
fa995154904e
patch 8.1.2300: redraw breaks going through list of popup windows
Bram Moolenaar <Bram@vim.org>
parents:
18597
diff
changeset
|
3350 : wp->w_zindex > found_zindex)) |
16880
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3351 { |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3352 found_zindex = wp->w_zindex; |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3353 found_wp = wp; |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3354 } |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3355 |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3356 if (found_wp != NULL) |
18613
fa995154904e
patch 8.1.2300: redraw breaks going through list of popup windows
Bram Moolenaar <Bram@vim.org>
parents:
18597
diff
changeset
|
3357 found_wp->w_popup_handled |= handled_flag; |
16880
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3358 return found_wp; |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3359 } |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3360 |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3361 /* |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3362 * Invoke the filter callback for window "wp" with typed character "c". |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3363 * Uses the global "mod_mask" for modifiers. |
22367
997bbc35c181
patch 8.2.1732: stuck when win_execute() for a popup causes an error
Bram Moolenaar <Bram@vim.org>
parents:
22357
diff
changeset
|
3364 * Returns the return value of the filter or -1 for CTRL-C in the current |
997bbc35c181
patch 8.2.1732: stuck when win_execute() for a popup causes an error
Bram Moolenaar <Bram@vim.org>
parents:
22357
diff
changeset
|
3365 * window. |
16880
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3366 * Careful: The filter may make "wp" invalid! |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3367 */ |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3368 static int |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3369 invoke_popup_filter(win_T *wp, int c) |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3370 { |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3371 int res; |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3372 typval_T rettv; |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3373 typval_T argv[3]; |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3374 char_u buf[NUMBUFLEN]; |
17429
6e756ad5ef1a
patch 8.1.1713: highlighting cursor line only works with popup_menu()
Bram Moolenaar <Bram@vim.org>
parents:
17421
diff
changeset
|
3375 linenr_T old_lnum = wp->w_cursor.lnum; |
22675
ff29f22c93f7
patch 8.2.1886: using ":silent!" in a popup filter has unexpected effect
Bram Moolenaar <Bram@vim.org>
parents:
22620
diff
changeset
|
3376 int prev_did_emsg = did_emsg; |
16880
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3377 |
17097
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
3378 // Emergency exit: CTRL-C closes the popup. |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
3379 if (c == Ctrl_C) |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
3380 { |
18239
9e696b8fee7d
patch 8.1.2114: when a popup is closed with CTRL-C the callback aborts
Bram Moolenaar <Bram@vim.org>
parents:
18229
diff
changeset
|
3381 int save_got_int = got_int; |
22367
997bbc35c181
patch 8.2.1732: stuck when win_execute() for a popup causes an error
Bram Moolenaar <Bram@vim.org>
parents:
22357
diff
changeset
|
3382 int was_curwin = wp == curwin; |
18239
9e696b8fee7d
patch 8.1.2114: when a popup is closed with CTRL-C the callback aborts
Bram Moolenaar <Bram@vim.org>
parents:
18229
diff
changeset
|
3383 |
9e696b8fee7d
patch 8.1.2114: when a popup is closed with CTRL-C the callback aborts
Bram Moolenaar <Bram@vim.org>
parents:
18229
diff
changeset
|
3384 // Reset got_int to avoid the callback isn't called. |
9e696b8fee7d
patch 8.1.2114: when a popup is closed with CTRL-C the callback aborts
Bram Moolenaar <Bram@vim.org>
parents:
18229
diff
changeset
|
3385 got_int = FALSE; |
17863
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3386 popup_close_with_retval(wp, -1); |
18239
9e696b8fee7d
patch 8.1.2114: when a popup is closed with CTRL-C the callback aborts
Bram Moolenaar <Bram@vim.org>
parents:
18229
diff
changeset
|
3387 got_int |= save_got_int; |
22367
997bbc35c181
patch 8.2.1732: stuck when win_execute() for a popup causes an error
Bram Moolenaar <Bram@vim.org>
parents:
22357
diff
changeset
|
3388 |
997bbc35c181
patch 8.2.1732: stuck when win_execute() for a popup causes an error
Bram Moolenaar <Bram@vim.org>
parents:
22357
diff
changeset
|
3389 // If the popup is the current window it probably fails to close. Then |
997bbc35c181
patch 8.2.1732: stuck when win_execute() for a popup causes an error
Bram Moolenaar <Bram@vim.org>
parents:
22357
diff
changeset
|
3390 // do not consume the key. |
997bbc35c181
patch 8.2.1732: stuck when win_execute() for a popup causes an error
Bram Moolenaar <Bram@vim.org>
parents:
22357
diff
changeset
|
3391 if (was_curwin && wp == curwin) |
997bbc35c181
patch 8.2.1732: stuck when win_execute() for a popup causes an error
Bram Moolenaar <Bram@vim.org>
parents:
22357
diff
changeset
|
3392 return -1; |
997bbc35c181
patch 8.2.1732: stuck when win_execute() for a popup causes an error
Bram Moolenaar <Bram@vim.org>
parents:
22357
diff
changeset
|
3393 return TRUE; |
17097
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
3394 } |
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
3395 |
16880
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3396 argv[0].v_type = VAR_NUMBER; |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3397 argv[0].vval.v_number = (varnumber_T)wp->w_id; |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3398 |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3399 // Convert the number to a string, so that the function can use: |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3400 // if a:c == "\<F2>" |
19544
167181848770
patch 8.2.0329: popup filter converts 0x80 bytes
Bram Moolenaar <Bram@vim.org>
parents:
19542
diff
changeset
|
3401 buf[special_to_buf(c, mod_mask, FALSE, buf)] = NUL; |
16880
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3402 argv[1].v_type = VAR_STRING; |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3403 argv[1].vval.v_string = vim_strsave(buf); |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3404 |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3405 argv[2].v_type = VAR_UNKNOWN; |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3406 |
18542
244b336b94ce
patch 8.1.2265: when popup with "botleft" does not fit it flips incorrectly
Bram Moolenaar <Bram@vim.org>
parents:
18512
diff
changeset
|
3407 // NOTE: The callback might close the popup and make "wp" invalid. |
22174
ea87cd1fac75
patch 8.2.1636: get stuck if a popup filter causes an error
Bram Moolenaar <Bram@vim.org>
parents:
22057
diff
changeset
|
3408 if (call_callback(&wp->w_filter_cb, -1, &rettv, 2, argv) == FAIL) |
ea87cd1fac75
patch 8.2.1636: get stuck if a popup filter causes an error
Bram Moolenaar <Bram@vim.org>
parents:
22057
diff
changeset
|
3409 { |
ea87cd1fac75
patch 8.2.1636: get stuck if a popup filter causes an error
Bram Moolenaar <Bram@vim.org>
parents:
22057
diff
changeset
|
3410 // Cannot call the function, close the popup to avoid that the filter |
22178
6666ace75ef5
patch 8.2.1638: leaking memory when popup filter function can't be called
Bram Moolenaar <Bram@vim.org>
parents:
22174
diff
changeset
|
3411 // eats keys and the user is stuck. Might as well eat the key. |
22174
ea87cd1fac75
patch 8.2.1636: get stuck if a popup filter causes an error
Bram Moolenaar <Bram@vim.org>
parents:
22057
diff
changeset
|
3412 popup_close_with_retval(wp, -1); |
22178
6666ace75ef5
patch 8.2.1638: leaking memory when popup filter function can't be called
Bram Moolenaar <Bram@vim.org>
parents:
22174
diff
changeset
|
3413 res = TRUE; |
22174
ea87cd1fac75
patch 8.2.1636: get stuck if a popup filter causes an error
Bram Moolenaar <Bram@vim.org>
parents:
22057
diff
changeset
|
3414 } |
ea87cd1fac75
patch 8.2.1636: get stuck if a popup filter causes an error
Bram Moolenaar <Bram@vim.org>
parents:
22057
diff
changeset
|
3415 else |
ea87cd1fac75
patch 8.2.1636: get stuck if a popup filter causes an error
Bram Moolenaar <Bram@vim.org>
parents:
22057
diff
changeset
|
3416 { |
22178
6666ace75ef5
patch 8.2.1638: leaking memory when popup filter function can't be called
Bram Moolenaar <Bram@vim.org>
parents:
22174
diff
changeset
|
3417 if (win_valid_popup(wp) && old_lnum != wp->w_cursor.lnum) |
6666ace75ef5
patch 8.2.1638: leaking memory when popup filter function can't be called
Bram Moolenaar <Bram@vim.org>
parents:
22174
diff
changeset
|
3418 popup_highlight_curline(wp); |
6666ace75ef5
patch 8.2.1638: leaking memory when popup filter function can't be called
Bram Moolenaar <Bram@vim.org>
parents:
22174
diff
changeset
|
3419 |
22675
ff29f22c93f7
patch 8.2.1886: using ":silent!" in a popup filter has unexpected effect
Bram Moolenaar <Bram@vim.org>
parents:
22620
diff
changeset
|
3420 // If an error message was given always return FALSE, so that keys are |
ff29f22c93f7
patch 8.2.1886: using ":silent!" in a popup filter has unexpected effect
Bram Moolenaar <Bram@vim.org>
parents:
22620
diff
changeset
|
3421 // not consumed and the user can type something. |
22178
6666ace75ef5
patch 8.2.1638: leaking memory when popup filter function can't be called
Bram Moolenaar <Bram@vim.org>
parents:
22174
diff
changeset
|
3422 // If we get three errors in a row then close the popup. Decrement the |
6666ace75ef5
patch 8.2.1638: leaking memory when popup filter function can't be called
Bram Moolenaar <Bram@vim.org>
parents:
22174
diff
changeset
|
3423 // error count by 1/10 if there are no errors, thus allowing up to 1 in |
6666ace75ef5
patch 8.2.1638: leaking memory when popup filter function can't be called
Bram Moolenaar <Bram@vim.org>
parents:
22174
diff
changeset
|
3424 // 10 calls to cause an error. |
22675
ff29f22c93f7
patch 8.2.1886: using ":silent!" in a popup filter has unexpected effect
Bram Moolenaar <Bram@vim.org>
parents:
22620
diff
changeset
|
3425 if (win_valid_popup(wp) && did_emsg > prev_did_emsg) |
22178
6666ace75ef5
patch 8.2.1638: leaking memory when popup filter function can't be called
Bram Moolenaar <Bram@vim.org>
parents:
22174
diff
changeset
|
3426 { |
6666ace75ef5
patch 8.2.1638: leaking memory when popup filter function can't be called
Bram Moolenaar <Bram@vim.org>
parents:
22174
diff
changeset
|
3427 wp->w_filter_errors += 10; |
6666ace75ef5
patch 8.2.1638: leaking memory when popup filter function can't be called
Bram Moolenaar <Bram@vim.org>
parents:
22174
diff
changeset
|
3428 if (wp->w_filter_errors >= 30) |
6666ace75ef5
patch 8.2.1638: leaking memory when popup filter function can't be called
Bram Moolenaar <Bram@vim.org>
parents:
22174
diff
changeset
|
3429 popup_close_with_retval(wp, -1); |
6666ace75ef5
patch 8.2.1638: leaking memory when popup filter function can't be called
Bram Moolenaar <Bram@vim.org>
parents:
22174
diff
changeset
|
3430 res = FALSE; |
6666ace75ef5
patch 8.2.1638: leaking memory when popup filter function can't be called
Bram Moolenaar <Bram@vim.org>
parents:
22174
diff
changeset
|
3431 } |
6666ace75ef5
patch 8.2.1638: leaking memory when popup filter function can't be called
Bram Moolenaar <Bram@vim.org>
parents:
22174
diff
changeset
|
3432 else |
6666ace75ef5
patch 8.2.1638: leaking memory when popup filter function can't be called
Bram Moolenaar <Bram@vim.org>
parents:
22174
diff
changeset
|
3433 { |
6666ace75ef5
patch 8.2.1638: leaking memory when popup filter function can't be called
Bram Moolenaar <Bram@vim.org>
parents:
22174
diff
changeset
|
3434 if (win_valid_popup(wp) && wp->w_filter_errors > 0) |
6666ace75ef5
patch 8.2.1638: leaking memory when popup filter function can't be called
Bram Moolenaar <Bram@vim.org>
parents:
22174
diff
changeset
|
3435 --wp->w_filter_errors; |
6666ace75ef5
patch 8.2.1638: leaking memory when popup filter function can't be called
Bram Moolenaar <Bram@vim.org>
parents:
22174
diff
changeset
|
3436 res = tv_get_bool(&rettv); |
6666ace75ef5
patch 8.2.1638: leaking memory when popup filter function can't be called
Bram Moolenaar <Bram@vim.org>
parents:
22174
diff
changeset
|
3437 } |
22174
ea87cd1fac75
patch 8.2.1636: get stuck if a popup filter causes an error
Bram Moolenaar <Bram@vim.org>
parents:
22057
diff
changeset
|
3438 } |
18544
a6dbbedddce1
patch 8.1.2266: position unknown for a mouse click in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
18542
diff
changeset
|
3439 |
16880
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3440 vim_free(argv[1].vval.v_string); |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3441 clear_tv(&rettv); |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3442 return res; |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3443 } |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3444 |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3445 /* |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3446 * Called when "c" was typed: invoke popup filter callbacks. |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3447 * Returns TRUE when the character was consumed, |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3448 */ |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3449 int |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3450 popup_do_filter(int c) |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3451 { |
17934
0bf8cb0258be
patch 8.1.1963: popup window filter may be called recursively
Bram Moolenaar <Bram@vim.org>
parents:
17926
diff
changeset
|
3452 static int recursive = FALSE; |
16880
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3453 int res = FALSE; |
17097
94007c802045
patch 8.1.1548: popup_dialog() is not implemented
Bram Moolenaar <Bram@vim.org>
parents:
17077
diff
changeset
|
3454 win_T *wp; |
17934
0bf8cb0258be
patch 8.1.1963: popup window filter may be called recursively
Bram Moolenaar <Bram@vim.org>
parents:
17926
diff
changeset
|
3455 int save_KeyTyped = KeyTyped; |
17946
ec4248c4b92c
patch 8.1.1969: popup window filter is used in all modes
Bram Moolenaar <Bram@vim.org>
parents:
17934
diff
changeset
|
3456 int state; |
18004
6006bb74bd52
patch 8.1.1998: redraw even when no popup window filter was invoked
Bram Moolenaar <Bram@vim.org>
parents:
18002
diff
changeset
|
3457 int was_must_redraw = must_redraw; |
17934
0bf8cb0258be
patch 8.1.1963: popup window filter may be called recursively
Bram Moolenaar <Bram@vim.org>
parents:
17926
diff
changeset
|
3458 |
19267
c7903f92ed75
patch 8.2.0192: build failure without +terminal feature
Bram Moolenaar <Bram@vim.org>
parents:
19265
diff
changeset
|
3459 #ifdef FEAT_TERMINAL |
19265
ce8c47ed54e5
patch 8.2.0191: cannot put a terminal in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
19241
diff
changeset
|
3460 // Popup window with terminal always gets focus. |
ce8c47ed54e5
patch 8.2.0191: cannot put a terminal in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
19241
diff
changeset
|
3461 if (popup_is_popup(curwin) && curbuf->b_term != NULL) |
ce8c47ed54e5
patch 8.2.0191: cannot put a terminal in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
19241
diff
changeset
|
3462 return FALSE; |
19267
c7903f92ed75
patch 8.2.0192: build failure without +terminal feature
Bram Moolenaar <Bram@vim.org>
parents:
19265
diff
changeset
|
3463 #endif |
19265
ce8c47ed54e5
patch 8.2.0191: cannot put a terminal in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
19241
diff
changeset
|
3464 |
17934
0bf8cb0258be
patch 8.1.1963: popup window filter may be called recursively
Bram Moolenaar <Bram@vim.org>
parents:
17926
diff
changeset
|
3465 if (recursive) |
0bf8cb0258be
patch 8.1.1963: popup window filter may be called recursively
Bram Moolenaar <Bram@vim.org>
parents:
17926
diff
changeset
|
3466 return FALSE; |
0bf8cb0258be
patch 8.1.1963: popup window filter may be called recursively
Bram Moolenaar <Bram@vim.org>
parents:
17926
diff
changeset
|
3467 recursive = TRUE; |
16880
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3468 |
17847
bdddd215bf09
patch 8.1.1920: cannot always close a popup when filter consumes all events
Bram Moolenaar <Bram@vim.org>
parents:
17845
diff
changeset
|
3469 if (c == K_LEFTMOUSE) |
bdddd215bf09
patch 8.1.1920: cannot always close a popup when filter consumes all events
Bram Moolenaar <Bram@vim.org>
parents:
17845
diff
changeset
|
3470 { |
bdddd215bf09
patch 8.1.1920: cannot always close a popup when filter consumes all events
Bram Moolenaar <Bram@vim.org>
parents:
17845
diff
changeset
|
3471 int row = mouse_row; |
bdddd215bf09
patch 8.1.1920: cannot always close a popup when filter consumes all events
Bram Moolenaar <Bram@vim.org>
parents:
17845
diff
changeset
|
3472 int col = mouse_col; |
bdddd215bf09
patch 8.1.1920: cannot always close a popup when filter consumes all events
Bram Moolenaar <Bram@vim.org>
parents:
17845
diff
changeset
|
3473 |
bdddd215bf09
patch 8.1.1920: cannot always close a popup when filter consumes all events
Bram Moolenaar <Bram@vim.org>
parents:
17845
diff
changeset
|
3474 wp = mouse_find_win(&row, &col, FIND_POPUP); |
bdddd215bf09
patch 8.1.1920: cannot always close a popup when filter consumes all events
Bram Moolenaar <Bram@vim.org>
parents:
17845
diff
changeset
|
3475 if (wp != NULL && popup_close_if_on_X(wp, row, col)) |
17934
0bf8cb0258be
patch 8.1.1963: popup window filter may be called recursively
Bram Moolenaar <Bram@vim.org>
parents:
17926
diff
changeset
|
3476 res = TRUE; |
17847
bdddd215bf09
patch 8.1.1920: cannot always close a popup when filter consumes all events
Bram Moolenaar <Bram@vim.org>
parents:
17845
diff
changeset
|
3477 } |
bdddd215bf09
patch 8.1.1920: cannot always close a popup when filter consumes all events
Bram Moolenaar <Bram@vim.org>
parents:
17845
diff
changeset
|
3478 |
18613
fa995154904e
patch 8.1.2300: redraw breaks going through list of popup windows
Bram Moolenaar <Bram@vim.org>
parents:
18597
diff
changeset
|
3479 popup_reset_handled(POPUP_HANDLED_2); |
17946
ec4248c4b92c
patch 8.1.1969: popup window filter is used in all modes
Bram Moolenaar <Bram@vim.org>
parents:
17934
diff
changeset
|
3480 state = get_real_state(); |
22367
997bbc35c181
patch 8.2.1732: stuck when win_execute() for a popup causes an error
Bram Moolenaar <Bram@vim.org>
parents:
22357
diff
changeset
|
3481 while (res == FALSE |
997bbc35c181
patch 8.2.1732: stuck when win_execute() for a popup causes an error
Bram Moolenaar <Bram@vim.org>
parents:
22357
diff
changeset
|
3482 && (wp = find_next_popup(FALSE, POPUP_HANDLED_2)) != NULL) |
17946
ec4248c4b92c
patch 8.1.1969: popup window filter is used in all modes
Bram Moolenaar <Bram@vim.org>
parents:
17934
diff
changeset
|
3483 if (wp->w_filter_cb.cb_name != NULL |
ec4248c4b92c
patch 8.1.1969: popup window filter is used in all modes
Bram Moolenaar <Bram@vim.org>
parents:
17934
diff
changeset
|
3484 && (wp->w_filter_mode & state) != 0) |
16880
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3485 res = invoke_popup_filter(wp, c); |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3486 |
18004
6006bb74bd52
patch 8.1.1998: redraw even when no popup window filter was invoked
Bram Moolenaar <Bram@vim.org>
parents:
18002
diff
changeset
|
3487 if (must_redraw > was_must_redraw) |
21731
48f9bf2c677d
patch 8.2.1415: closing a popup window with CTRL-C interrupts 'statusline'
Bram Moolenaar <Bram@vim.org>
parents:
21729
diff
changeset
|
3488 { |
48f9bf2c677d
patch 8.2.1415: closing a popup window with CTRL-C interrupts 'statusline'
Bram Moolenaar <Bram@vim.org>
parents:
21729
diff
changeset
|
3489 int save_got_int = got_int; |
48f9bf2c677d
patch 8.2.1415: closing a popup window with CTRL-C interrupts 'statusline'
Bram Moolenaar <Bram@vim.org>
parents:
21729
diff
changeset
|
3490 |
48f9bf2c677d
patch 8.2.1415: closing a popup window with CTRL-C interrupts 'statusline'
Bram Moolenaar <Bram@vim.org>
parents:
21729
diff
changeset
|
3491 // Reset got_int to avoid a function used in the statusline aborts. |
48f9bf2c677d
patch 8.2.1415: closing a popup window with CTRL-C interrupts 'statusline'
Bram Moolenaar <Bram@vim.org>
parents:
21729
diff
changeset
|
3492 got_int = FALSE; |
26466
d413104a94c8
patch 8.2.3763: when editing the cmdline a callback may cause a scroll up
Bram Moolenaar <Bram@vim.org>
parents:
26439
diff
changeset
|
3493 redraw_after_callback(FALSE, FALSE); |
21731
48f9bf2c677d
patch 8.2.1415: closing a popup window with CTRL-C interrupts 'statusline'
Bram Moolenaar <Bram@vim.org>
parents:
21729
diff
changeset
|
3494 got_int |= save_got_int; |
48f9bf2c677d
patch 8.2.1415: closing a popup window with CTRL-C interrupts 'statusline'
Bram Moolenaar <Bram@vim.org>
parents:
21729
diff
changeset
|
3495 } |
17934
0bf8cb0258be
patch 8.1.1963: popup window filter may be called recursively
Bram Moolenaar <Bram@vim.org>
parents:
17926
diff
changeset
|
3496 recursive = FALSE; |
0bf8cb0258be
patch 8.1.1963: popup window filter may be called recursively
Bram Moolenaar <Bram@vim.org>
parents:
17926
diff
changeset
|
3497 KeyTyped = save_KeyTyped; |
22367
997bbc35c181
patch 8.2.1732: stuck when win_execute() for a popup causes an error
Bram Moolenaar <Bram@vim.org>
parents:
22357
diff
changeset
|
3498 |
997bbc35c181
patch 8.2.1732: stuck when win_execute() for a popup causes an error
Bram Moolenaar <Bram@vim.org>
parents:
22357
diff
changeset
|
3499 // When interrupted return FALSE to avoid looping. |
997bbc35c181
patch 8.2.1732: stuck when win_execute() for a popup causes an error
Bram Moolenaar <Bram@vim.org>
parents:
22357
diff
changeset
|
3500 return res == -1 ? FALSE : res; |
16880
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3501 } |
998603a243d7
patch 8.1.1441: popup window filter not yet implemented
Bram Moolenaar <Bram@vim.org>
parents:
16874
diff
changeset
|
3502 |
16904
9138e2c60bf1
patch 8.1.1453: popup window "moved" property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16902
diff
changeset
|
3503 /* |
17604
506dd2efcbb2
patch 8.1.1799: cannot avoid mapping for a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17584
diff
changeset
|
3504 * Return TRUE if there is a popup visible with a filter callback and the |
506dd2efcbb2
patch 8.1.1799: cannot avoid mapping for a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17584
diff
changeset
|
3505 * "mapping" property off. |
506dd2efcbb2
patch 8.1.1799: cannot avoid mapping for a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17584
diff
changeset
|
3506 */ |
506dd2efcbb2
patch 8.1.1799: cannot avoid mapping for a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17584
diff
changeset
|
3507 int |
506dd2efcbb2
patch 8.1.1799: cannot avoid mapping for a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17584
diff
changeset
|
3508 popup_no_mapping(void) |
506dd2efcbb2
patch 8.1.1799: cannot avoid mapping for a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17584
diff
changeset
|
3509 { |
506dd2efcbb2
patch 8.1.1799: cannot avoid mapping for a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17584
diff
changeset
|
3510 int round; |
506dd2efcbb2
patch 8.1.1799: cannot avoid mapping for a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17584
diff
changeset
|
3511 win_T *wp; |
506dd2efcbb2
patch 8.1.1799: cannot avoid mapping for a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17584
diff
changeset
|
3512 |
506dd2efcbb2
patch 8.1.1799: cannot avoid mapping for a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17584
diff
changeset
|
3513 for (round = 1; round <= 2; ++round) |
506dd2efcbb2
patch 8.1.1799: cannot avoid mapping for a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17584
diff
changeset
|
3514 for (wp = round == 1 ? first_popupwin : curtab->tp_first_popupwin; |
506dd2efcbb2
patch 8.1.1799: cannot avoid mapping for a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17584
diff
changeset
|
3515 wp != NULL; wp = wp->w_next) |
506dd2efcbb2
patch 8.1.1799: cannot avoid mapping for a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17584
diff
changeset
|
3516 if (wp->w_filter_cb.cb_name != NULL |
506dd2efcbb2
patch 8.1.1799: cannot avoid mapping for a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17584
diff
changeset
|
3517 && (wp->w_popup_flags & (POPF_HIDDEN | POPF_MAPPING)) == 0) |
506dd2efcbb2
patch 8.1.1799: cannot avoid mapping for a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17584
diff
changeset
|
3518 return TRUE; |
506dd2efcbb2
patch 8.1.1799: cannot avoid mapping for a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17584
diff
changeset
|
3519 return FALSE; |
506dd2efcbb2
patch 8.1.1799: cannot avoid mapping for a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17584
diff
changeset
|
3520 } |
506dd2efcbb2
patch 8.1.1799: cannot avoid mapping for a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17584
diff
changeset
|
3521 |
506dd2efcbb2
patch 8.1.1799: cannot avoid mapping for a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17584
diff
changeset
|
3522 /* |
16904
9138e2c60bf1
patch 8.1.1453: popup window "moved" property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16902
diff
changeset
|
3523 * Called when the cursor moved: check if any popup needs to be closed if the |
9138e2c60bf1
patch 8.1.1453: popup window "moved" property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16902
diff
changeset
|
3524 * cursor moved far enough. |
9138e2c60bf1
patch 8.1.1453: popup window "moved" property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16902
diff
changeset
|
3525 */ |
9138e2c60bf1
patch 8.1.1453: popup window "moved" property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16902
diff
changeset
|
3526 void |
9138e2c60bf1
patch 8.1.1453: popup window "moved" property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16902
diff
changeset
|
3527 popup_check_cursor_pos() |
9138e2c60bf1
patch 8.1.1453: popup window "moved" property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16902
diff
changeset
|
3528 { |
9138e2c60bf1
patch 8.1.1453: popup window "moved" property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16902
diff
changeset
|
3529 win_T *wp; |
9138e2c60bf1
patch 8.1.1453: popup window "moved" property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16902
diff
changeset
|
3530 |
18613
fa995154904e
patch 8.1.2300: redraw breaks going through list of popup windows
Bram Moolenaar <Bram@vim.org>
parents:
18597
diff
changeset
|
3531 popup_reset_handled(POPUP_HANDLED_3); |
fa995154904e
patch 8.1.2300: redraw breaks going through list of popup windows
Bram Moolenaar <Bram@vim.org>
parents:
18597
diff
changeset
|
3532 while ((wp = find_next_popup(TRUE, POPUP_HANDLED_3)) != NULL) |
16904
9138e2c60bf1
patch 8.1.1453: popup window "moved" property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16902
diff
changeset
|
3533 if (wp->w_popup_curwin != NULL |
9138e2c60bf1
patch 8.1.1453: popup window "moved" property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16902
diff
changeset
|
3534 && (curwin != wp->w_popup_curwin |
9138e2c60bf1
patch 8.1.1453: popup window "moved" property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16902
diff
changeset
|
3535 || curwin->w_cursor.lnum != wp->w_popup_lnum |
9138e2c60bf1
patch 8.1.1453: popup window "moved" property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16902
diff
changeset
|
3536 || curwin->w_cursor.col < wp->w_popup_mincol |
9138e2c60bf1
patch 8.1.1453: popup window "moved" property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16902
diff
changeset
|
3537 || curwin->w_cursor.col > wp->w_popup_maxcol)) |
17863
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3538 popup_close_with_retval(wp, -1); |
16904
9138e2c60bf1
patch 8.1.1453: popup window "moved" property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16902
diff
changeset
|
3539 } |
9138e2c60bf1
patch 8.1.1453: popup window "moved" property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
16902
diff
changeset
|
3540 |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3541 /* |
17510
a5427e35d0fb
patch 8.1.1753: use of popup window mask is inefficient
Bram Moolenaar <Bram@vim.org>
parents:
17508
diff
changeset
|
3542 * Update "w_popup_mask_cells". |
17162
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3543 */ |
17510
a5427e35d0fb
patch 8.1.1753: use of popup window mask is inefficient
Bram Moolenaar <Bram@vim.org>
parents:
17508
diff
changeset
|
3544 static void |
a5427e35d0fb
patch 8.1.1753: use of popup window mask is inefficient
Bram Moolenaar <Bram@vim.org>
parents:
17508
diff
changeset
|
3545 popup_update_mask(win_T *wp, int width, int height) |
17162
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3546 { |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3547 listitem_T *lio, *li; |
17510
a5427e35d0fb
patch 8.1.1753: use of popup window mask is inefficient
Bram Moolenaar <Bram@vim.org>
parents:
17508
diff
changeset
|
3548 char_u *cells; |
a5427e35d0fb
patch 8.1.1753: use of popup window mask is inefficient
Bram Moolenaar <Bram@vim.org>
parents:
17508
diff
changeset
|
3549 int row, col; |
17162
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3550 |
23936
a0e02766e06d
patch 8.2.2510: internal error when popup with mask is zero height or width
Bram Moolenaar <Bram@vim.org>
parents:
23897
diff
changeset
|
3551 if (wp->w_popup_mask == NULL || width == 0 || height == 0) |
a0e02766e06d
patch 8.2.2510: internal error when popup with mask is zero height or width
Bram Moolenaar <Bram@vim.org>
parents:
23897
diff
changeset
|
3552 { |
a0e02766e06d
patch 8.2.2510: internal error when popup with mask is zero height or width
Bram Moolenaar <Bram@vim.org>
parents:
23897
diff
changeset
|
3553 vim_free(wp->w_popup_mask_cells); |
a0e02766e06d
patch 8.2.2510: internal error when popup with mask is zero height or width
Bram Moolenaar <Bram@vim.org>
parents:
23897
diff
changeset
|
3554 wp->w_popup_mask_cells = NULL; |
17510
a5427e35d0fb
patch 8.1.1753: use of popup window mask is inefficient
Bram Moolenaar <Bram@vim.org>
parents:
17508
diff
changeset
|
3555 return; |
23936
a0e02766e06d
patch 8.2.2510: internal error when popup with mask is zero height or width
Bram Moolenaar <Bram@vim.org>
parents:
23897
diff
changeset
|
3556 } |
17510
a5427e35d0fb
patch 8.1.1753: use of popup window mask is inefficient
Bram Moolenaar <Bram@vim.org>
parents:
17508
diff
changeset
|
3557 if (wp->w_popup_mask_cells != NULL |
a5427e35d0fb
patch 8.1.1753: use of popup window mask is inefficient
Bram Moolenaar <Bram@vim.org>
parents:
17508
diff
changeset
|
3558 && wp->w_popup_mask_height == height |
a5427e35d0fb
patch 8.1.1753: use of popup window mask is inefficient
Bram Moolenaar <Bram@vim.org>
parents:
17508
diff
changeset
|
3559 && wp->w_popup_mask_width == width) |
a5427e35d0fb
patch 8.1.1753: use of popup window mask is inefficient
Bram Moolenaar <Bram@vim.org>
parents:
17508
diff
changeset
|
3560 return; // cache is still valid |
a5427e35d0fb
patch 8.1.1753: use of popup window mask is inefficient
Bram Moolenaar <Bram@vim.org>
parents:
17508
diff
changeset
|
3561 |
a5427e35d0fb
patch 8.1.1753: use of popup window mask is inefficient
Bram Moolenaar <Bram@vim.org>
parents:
17508
diff
changeset
|
3562 vim_free(wp->w_popup_mask_cells); |
27453
c7f614c9ceb3
patch 8.2.4255: theoretical computation overflow
Bram Moolenaar <Bram@vim.org>
parents:
26986
diff
changeset
|
3563 wp->w_popup_mask_cells = alloc_clear((size_t)width * height); |
17510
a5427e35d0fb
patch 8.1.1753: use of popup window mask is inefficient
Bram Moolenaar <Bram@vim.org>
parents:
17508
diff
changeset
|
3564 if (wp->w_popup_mask_cells == NULL) |
a5427e35d0fb
patch 8.1.1753: use of popup window mask is inefficient
Bram Moolenaar <Bram@vim.org>
parents:
17508
diff
changeset
|
3565 return; |
a5427e35d0fb
patch 8.1.1753: use of popup window mask is inefficient
Bram Moolenaar <Bram@vim.org>
parents:
17508
diff
changeset
|
3566 cells = wp->w_popup_mask_cells; |
17162
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3567 |
19888
435726a03481
patch 8.2.0500: using the same loop in many places
Bram Moolenaar <Bram@vim.org>
parents:
19647
diff
changeset
|
3568 FOR_ALL_LIST_ITEMS(wp->w_popup_mask, lio) |
17162
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3569 { |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3570 int cols, cole; |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3571 int lines, linee; |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3572 |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3573 li = lio->li_tv.vval.v_list->lv_first; |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3574 cols = tv_get_number(&li->li_tv); |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3575 if (cols < 0) |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3576 cols = width + cols + 1; |
23400
5cc8108914e2
patch 8.2.2243: crash when popup mask contains zeroes
Bram Moolenaar <Bram@vim.org>
parents:
23173
diff
changeset
|
3577 if (cols <= 0) |
5cc8108914e2
patch 8.2.2243: crash when popup mask contains zeroes
Bram Moolenaar <Bram@vim.org>
parents:
23173
diff
changeset
|
3578 cols = 1; |
17162
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3579 li = li->li_next; |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3580 cole = tv_get_number(&li->li_tv); |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3581 if (cole < 0) |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3582 cole = width + cole + 1; |
23400
5cc8108914e2
patch 8.2.2243: crash when popup mask contains zeroes
Bram Moolenaar <Bram@vim.org>
parents:
23173
diff
changeset
|
3583 if (cole > width) |
5cc8108914e2
patch 8.2.2243: crash when popup mask contains zeroes
Bram Moolenaar <Bram@vim.org>
parents:
23173
diff
changeset
|
3584 cole = width; |
17162
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3585 li = li->li_next; |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3586 lines = tv_get_number(&li->li_tv); |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3587 if (lines < 0) |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3588 lines = height + lines + 1; |
23400
5cc8108914e2
patch 8.2.2243: crash when popup mask contains zeroes
Bram Moolenaar <Bram@vim.org>
parents:
23173
diff
changeset
|
3589 if (lines <= 0) |
5cc8108914e2
patch 8.2.2243: crash when popup mask contains zeroes
Bram Moolenaar <Bram@vim.org>
parents:
23173
diff
changeset
|
3590 lines = 1; |
17162
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3591 li = li->li_next; |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3592 linee = tv_get_number(&li->li_tv); |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3593 if (linee < 0) |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3594 linee = height + linee + 1; |
23400
5cc8108914e2
patch 8.2.2243: crash when popup mask contains zeroes
Bram Moolenaar <Bram@vim.org>
parents:
23173
diff
changeset
|
3595 if (linee > height) |
5cc8108914e2
patch 8.2.2243: crash when popup mask contains zeroes
Bram Moolenaar <Bram@vim.org>
parents:
23173
diff
changeset
|
3596 linee = height; |
5cc8108914e2
patch 8.2.2243: crash when popup mask contains zeroes
Bram Moolenaar <Bram@vim.org>
parents:
23173
diff
changeset
|
3597 |
5cc8108914e2
patch 8.2.2243: crash when popup mask contains zeroes
Bram Moolenaar <Bram@vim.org>
parents:
23173
diff
changeset
|
3598 for (row = lines - 1; row < linee; ++row) |
5cc8108914e2
patch 8.2.2243: crash when popup mask contains zeroes
Bram Moolenaar <Bram@vim.org>
parents:
23173
diff
changeset
|
3599 for (col = cols - 1; col < cole; ++col) |
17510
a5427e35d0fb
patch 8.1.1753: use of popup window mask is inefficient
Bram Moolenaar <Bram@vim.org>
parents:
17508
diff
changeset
|
3600 cells[row * width + col] = 1; |
17162
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3601 } |
17510
a5427e35d0fb
patch 8.1.1753: use of popup window mask is inefficient
Bram Moolenaar <Bram@vim.org>
parents:
17508
diff
changeset
|
3602 } |
a5427e35d0fb
patch 8.1.1753: use of popup window mask is inefficient
Bram Moolenaar <Bram@vim.org>
parents:
17508
diff
changeset
|
3603 |
a5427e35d0fb
patch 8.1.1753: use of popup window mask is inefficient
Bram Moolenaar <Bram@vim.org>
parents:
17508
diff
changeset
|
3604 /* |
a5427e35d0fb
patch 8.1.1753: use of popup window mask is inefficient
Bram Moolenaar <Bram@vim.org>
parents:
17508
diff
changeset
|
3605 * Return TRUE if "col" / "line" matches with an entry in w_popup_mask. |
a5427e35d0fb
patch 8.1.1753: use of popup window mask is inefficient
Bram Moolenaar <Bram@vim.org>
parents:
17508
diff
changeset
|
3606 * "col" and "line" are screen coordinates. |
a5427e35d0fb
patch 8.1.1753: use of popup window mask is inefficient
Bram Moolenaar <Bram@vim.org>
parents:
17508
diff
changeset
|
3607 */ |
a5427e35d0fb
patch 8.1.1753: use of popup window mask is inefficient
Bram Moolenaar <Bram@vim.org>
parents:
17508
diff
changeset
|
3608 static int |
a5427e35d0fb
patch 8.1.1753: use of popup window mask is inefficient
Bram Moolenaar <Bram@vim.org>
parents:
17508
diff
changeset
|
3609 popup_masked(win_T *wp, int width, int height, int screencol, int screenline) |
a5427e35d0fb
patch 8.1.1753: use of popup window mask is inefficient
Bram Moolenaar <Bram@vim.org>
parents:
17508
diff
changeset
|
3610 { |
a5427e35d0fb
patch 8.1.1753: use of popup window mask is inefficient
Bram Moolenaar <Bram@vim.org>
parents:
17508
diff
changeset
|
3611 int col = screencol - wp->w_wincol + wp->w_popup_leftoff; |
a5427e35d0fb
patch 8.1.1753: use of popup window mask is inefficient
Bram Moolenaar <Bram@vim.org>
parents:
17508
diff
changeset
|
3612 int line = screenline - wp->w_winrow; |
a5427e35d0fb
patch 8.1.1753: use of popup window mask is inefficient
Bram Moolenaar <Bram@vim.org>
parents:
17508
diff
changeset
|
3613 |
a5427e35d0fb
patch 8.1.1753: use of popup window mask is inefficient
Bram Moolenaar <Bram@vim.org>
parents:
17508
diff
changeset
|
3614 return col >= 0 && col < width |
a5427e35d0fb
patch 8.1.1753: use of popup window mask is inefficient
Bram Moolenaar <Bram@vim.org>
parents:
17508
diff
changeset
|
3615 && line >= 0 && line < height |
a5427e35d0fb
patch 8.1.1753: use of popup window mask is inefficient
Bram Moolenaar <Bram@vim.org>
parents:
17508
diff
changeset
|
3616 && wp->w_popup_mask_cells[line * width + col]; |
17162
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3617 } |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3618 |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3619 /* |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3620 * Set flags in popup_transparent[] for window "wp" to "val". |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3621 */ |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3622 static void |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3623 update_popup_transparent(win_T *wp, int val) |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3624 { |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3625 if (wp->w_popup_mask != NULL) |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3626 { |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3627 int width = popup_width(wp); |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3628 int height = popup_height(wp); |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3629 listitem_T *lio, *li; |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3630 int cols, cole; |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3631 int lines, linee; |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3632 int col, line; |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3633 |
19888
435726a03481
patch 8.2.0500: using the same loop in many places
Bram Moolenaar <Bram@vim.org>
parents:
19647
diff
changeset
|
3634 FOR_ALL_LIST_ITEMS(wp->w_popup_mask, lio) |
17162
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3635 { |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3636 li = lio->li_tv.vval.v_list->lv_first; |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3637 cols = tv_get_number(&li->li_tv); |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3638 if (cols < 0) |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3639 cols = width + cols + 1; |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3640 li = li->li_next; |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3641 cole = tv_get_number(&li->li_tv); |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3642 if (cole < 0) |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3643 cole = width + cole + 1; |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3644 li = li->li_next; |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3645 lines = tv_get_number(&li->li_tv); |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3646 if (lines < 0) |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3647 lines = height + lines + 1; |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3648 li = li->li_next; |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3649 linee = tv_get_number(&li->li_tv); |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3650 if (linee < 0) |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3651 linee = height + linee + 1; |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3652 |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3653 --cols; |
17235
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
3654 cols -= wp->w_popup_leftoff; |
17206
8ca93f88b84a
patch 8.1.1602: popup window cannot overflow on the left or right
Bram Moolenaar <Bram@vim.org>
parents:
17202
diff
changeset
|
3655 if (cols < 0) |
8ca93f88b84a
patch 8.1.1602: popup window cannot overflow on the left or right
Bram Moolenaar <Bram@vim.org>
parents:
17202
diff
changeset
|
3656 cols = 0; |
17235
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
3657 cole -= wp->w_popup_leftoff; |
17162
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3658 --lines; |
17206
8ca93f88b84a
patch 8.1.1602: popup window cannot overflow on the left or right
Bram Moolenaar <Bram@vim.org>
parents:
17202
diff
changeset
|
3659 if (lines < 0) |
8ca93f88b84a
patch 8.1.1602: popup window cannot overflow on the left or right
Bram Moolenaar <Bram@vim.org>
parents:
17202
diff
changeset
|
3660 lines = 0; |
17332
61f0bf94ef92
patch 8.1.1665: crash when popup window with mask is below the screen
Bram Moolenaar <Bram@vim.org>
parents:
17328
diff
changeset
|
3661 for (line = lines; line < linee |
61f0bf94ef92
patch 8.1.1665: crash when popup window with mask is below the screen
Bram Moolenaar <Bram@vim.org>
parents:
17328
diff
changeset
|
3662 && line + wp->w_winrow < screen_Rows; ++line) |
61f0bf94ef92
patch 8.1.1665: crash when popup window with mask is below the screen
Bram Moolenaar <Bram@vim.org>
parents:
17328
diff
changeset
|
3663 for (col = cols; col < cole |
61f0bf94ef92
patch 8.1.1665: crash when popup window with mask is below the screen
Bram Moolenaar <Bram@vim.org>
parents:
17328
diff
changeset
|
3664 && col + wp->w_wincol < screen_Columns; ++col) |
17162
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3665 popup_transparent[(line + wp->w_winrow) * screen_Columns |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3666 + col + wp->w_wincol] = val; |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3667 } |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3668 } |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3669 } |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3670 |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3671 /* |
17863
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3672 * Only called when popup window "wp" is hidden: If the window is positioned |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3673 * next to a text property, and it is now visible, then unhide the popup. |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3674 * We don't check if visible popups become hidden, that is done in |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3675 * popup_adjust_position(). |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3676 * Return TRUE if the popup became unhidden. |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3677 */ |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3678 static int |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3679 check_popup_unhidden(win_T *wp) |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3680 { |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3681 if (wp->w_popup_prop_type > 0 && win_valid(wp->w_popup_prop_win)) |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3682 { |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3683 textprop_T prop; |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3684 linenr_T lnum; |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3685 |
28778
a8c2bd5fc727
patch 8.2.4913: popup_hide() does not always have effect
Bram Moolenaar <Bram@vim.org>
parents:
28550
diff
changeset
|
3686 if ((wp->w_popup_flags & POPF_HIDDEN_FORCE) == 0 |
a8c2bd5fc727
patch 8.2.4913: popup_hide() does not always have effect
Bram Moolenaar <Bram@vim.org>
parents:
28550
diff
changeset
|
3687 && find_visible_prop(wp->w_popup_prop_win, |
a8c2bd5fc727
patch 8.2.4913: popup_hide() does not always have effect
Bram Moolenaar <Bram@vim.org>
parents:
28550
diff
changeset
|
3688 wp->w_popup_prop_type, wp->w_popup_prop_id, |
17863
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3689 &prop, &lnum) == OK) |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3690 { |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3691 wp->w_popup_flags &= ~POPF_HIDDEN; |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3692 wp->w_popup_prop_topline = 0; // force repositioning |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3693 return TRUE; |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3694 } |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3695 } |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3696 return FALSE; |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3697 } |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3698 |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3699 /* |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3700 * Return TRUE if popup_adjust_position() needs to be called for "wp". |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3701 * That is when the buffer in the popup was changed, or the popup is following |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3702 * a textprop and the referenced buffer was changed. |
18027
56032a704448
patch 8.1.2009: cursorline highlighting not updated in popup window
Bram Moolenaar <Bram@vim.org>
parents:
18004
diff
changeset
|
3703 * Or when the cursor line changed and "cursorline" is set. |
17863
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3704 */ |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3705 static int |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3706 popup_need_position_adjust(win_T *wp) |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3707 { |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3708 if (wp->w_popup_last_changedtick != CHANGEDTICK(wp->w_buffer)) |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3709 return TRUE; |
22403
3351d2cd3f1f
patch 8.2.1750: popup_setoptions() setting firstline fails if cursorline set
Bram Moolenaar <Bram@vim.org>
parents:
22377
diff
changeset
|
3710 if (win_valid(wp->w_popup_prop_win) |
3351d2cd3f1f
patch 8.2.1750: popup_setoptions() setting firstline fails if cursorline set
Bram Moolenaar <Bram@vim.org>
parents:
22377
diff
changeset
|
3711 && (wp->w_popup_prop_changedtick |
3351d2cd3f1f
patch 8.2.1750: popup_setoptions() setting firstline fails if cursorline set
Bram Moolenaar <Bram@vim.org>
parents:
22377
diff
changeset
|
3712 != CHANGEDTICK(wp->w_popup_prop_win->w_buffer) |
3351d2cd3f1f
patch 8.2.1750: popup_setoptions() setting firstline fails if cursorline set
Bram Moolenaar <Bram@vim.org>
parents:
22377
diff
changeset
|
3713 || wp->w_popup_prop_topline != wp->w_popup_prop_win->w_topline)) |
3351d2cd3f1f
patch 8.2.1750: popup_setoptions() setting firstline fails if cursorline set
Bram Moolenaar <Bram@vim.org>
parents:
22377
diff
changeset
|
3714 return TRUE; |
3351d2cd3f1f
patch 8.2.1750: popup_setoptions() setting firstline fails if cursorline set
Bram Moolenaar <Bram@vim.org>
parents:
22377
diff
changeset
|
3715 |
3351d2cd3f1f
patch 8.2.1750: popup_setoptions() setting firstline fails if cursorline set
Bram Moolenaar <Bram@vim.org>
parents:
22377
diff
changeset
|
3716 // May need to adjust the width if the cursor moved. |
3351d2cd3f1f
patch 8.2.1750: popup_setoptions() setting firstline fails if cursorline set
Bram Moolenaar <Bram@vim.org>
parents:
22377
diff
changeset
|
3717 return wp->w_cursor.lnum != wp->w_popup_last_curline; |
17863
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3718 } |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3719 |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3720 /* |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3721 * Update "popup_mask" if needed. |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3722 * Also recomputes the popup size and positions. |
28187
d27a9eed9849
patch 8.2.4619: mapping is cancelled when mouse moves and popup is visible
Bram Moolenaar <Bram@vim.org>
parents:
28089
diff
changeset
|
3723 * Also updates "popup_visible" and "popup_uses_mouse_move". |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3724 * Also marks window lines for redrawing. |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3725 */ |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3726 void |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3727 may_update_popup_mask(int type) |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3728 { |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3729 win_T *wp; |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3730 short *mask; |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3731 int line, col; |
17843
9696c76f2213
patch 8.1.1918: redrawing popups is inefficient
Bram Moolenaar <Bram@vim.org>
parents:
17841
diff
changeset
|
3732 int redraw_all_popups = FALSE; |
9696c76f2213
patch 8.1.1918: redrawing popups is inefficient
Bram Moolenaar <Bram@vim.org>
parents:
17841
diff
changeset
|
3733 int redrawing_all_win; |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3734 |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3735 // Need to recompute when switching tabs. |
29732
89e1d67814a9
patch 9.0.0206: redraw flags are not named specifically
Bram Moolenaar <Bram@vim.org>
parents:
29660
diff
changeset
|
3736 // Also recompute when the type is UPD_CLEAR or UPD_NOT_VALID, something |
89e1d67814a9
patch 9.0.0206: redraw flags are not named specifically
Bram Moolenaar <Bram@vim.org>
parents:
29660
diff
changeset
|
3737 // basic (such as the screen size) must have changed. |
89e1d67814a9
patch 9.0.0206: redraw flags are not named specifically
Bram Moolenaar <Bram@vim.org>
parents:
29660
diff
changeset
|
3738 if (popup_mask_tab != curtab || type >= UPD_NOT_VALID) |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3739 { |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3740 popup_mask_refresh = TRUE; |
17843
9696c76f2213
patch 8.1.1918: redrawing popups is inefficient
Bram Moolenaar <Bram@vim.org>
parents:
17841
diff
changeset
|
3741 redraw_all_popups = TRUE; |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3742 } |
17863
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3743 |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3744 // Check if any popup window buffer has changed and if any popup connected |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3745 // to a text property has become visible. |
19888
435726a03481
patch 8.2.0500: using the same loop in many places
Bram Moolenaar <Bram@vim.org>
parents:
19647
diff
changeset
|
3746 FOR_ALL_POPUPWINS(wp) |
17863
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3747 if (wp->w_popup_flags & POPF_HIDDEN) |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3748 popup_mask_refresh |= check_popup_unhidden(wp); |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3749 else if (popup_need_position_adjust(wp)) |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3750 popup_mask_refresh = TRUE; |
19888
435726a03481
patch 8.2.0500: using the same loop in many places
Bram Moolenaar <Bram@vim.org>
parents:
19647
diff
changeset
|
3751 FOR_ALL_POPUPWINS_IN_TAB(curtab, wp) |
17863
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3752 if (wp->w_popup_flags & POPF_HIDDEN) |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3753 popup_mask_refresh |= check_popup_unhidden(wp); |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3754 else if (popup_need_position_adjust(wp)) |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3755 popup_mask_refresh = TRUE; |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3756 |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3757 if (!popup_mask_refresh) |
17863
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3758 return; |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3759 |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3760 // Need to update the mask, something has changed. |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3761 popup_mask_refresh = FALSE; |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3762 popup_mask_tab = curtab; |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3763 popup_visible = FALSE; |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3764 |
17843
9696c76f2213
patch 8.1.1918: redrawing popups is inefficient
Bram Moolenaar <Bram@vim.org>
parents:
17841
diff
changeset
|
3765 // If redrawing all windows, just update "popup_mask". |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3766 // If redrawing only what is needed, update "popup_mask_next" and then |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3767 // compare with "popup_mask" to see what changed. |
17843
9696c76f2213
patch 8.1.1918: redrawing popups is inefficient
Bram Moolenaar <Bram@vim.org>
parents:
17841
diff
changeset
|
3768 redrawing_all_win = TRUE; |
9696c76f2213
patch 8.1.1918: redrawing popups is inefficient
Bram Moolenaar <Bram@vim.org>
parents:
17841
diff
changeset
|
3769 FOR_ALL_WINDOWS(wp) |
29732
89e1d67814a9
patch 9.0.0206: redraw flags are not named specifically
Bram Moolenaar <Bram@vim.org>
parents:
29660
diff
changeset
|
3770 if (wp->w_redr_type < UPD_SOME_VALID) |
17843
9696c76f2213
patch 8.1.1918: redrawing popups is inefficient
Bram Moolenaar <Bram@vim.org>
parents:
17841
diff
changeset
|
3771 redrawing_all_win = FALSE; |
9696c76f2213
patch 8.1.1918: redrawing popups is inefficient
Bram Moolenaar <Bram@vim.org>
parents:
17841
diff
changeset
|
3772 if (redrawing_all_win) |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3773 mask = popup_mask; |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3774 else |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3775 mask = popup_mask_next; |
27453
c7f614c9ceb3
patch 8.2.4255: theoretical computation overflow
Bram Moolenaar <Bram@vim.org>
parents:
26986
diff
changeset
|
3776 vim_memset(mask, 0, (size_t)screen_Rows * screen_Columns * sizeof(short)); |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3777 |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3778 // Find the window with the lowest zindex that hasn't been handled yet, |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3779 // so that the window with a higher zindex overwrites the value in |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3780 // popup_mask. |
18613
fa995154904e
patch 8.1.2300: redraw breaks going through list of popup windows
Bram Moolenaar <Bram@vim.org>
parents:
18597
diff
changeset
|
3781 popup_reset_handled(POPUP_HANDLED_4); |
fa995154904e
patch 8.1.2300: redraw breaks going through list of popup windows
Bram Moolenaar <Bram@vim.org>
parents:
18597
diff
changeset
|
3782 while ((wp = find_next_popup(TRUE, POPUP_HANDLED_4)) != NULL) |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3783 { |
17510
a5427e35d0fb
patch 8.1.1753: use of popup window mask is inefficient
Bram Moolenaar <Bram@vim.org>
parents:
17508
diff
changeset
|
3784 int width; |
17235
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
3785 int height; |
17162
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3786 |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3787 popup_visible = TRUE; |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3788 |
17863
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3789 // Recompute the position if the text changed. It may make the popup |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3790 // hidden if it's attach to a text property that is no longer visible. |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3791 if (redraw_all_popups || popup_need_position_adjust(wp)) |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3792 { |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3793 popup_adjust_position(wp); |
17863
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3794 if (wp->w_popup_flags & POPF_HIDDEN) |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3795 continue; |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
3796 } |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3797 |
17510
a5427e35d0fb
patch 8.1.1753: use of popup window mask is inefficient
Bram Moolenaar <Bram@vim.org>
parents:
17508
diff
changeset
|
3798 width = popup_width(wp); |
17235
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
3799 height = popup_height(wp); |
17510
a5427e35d0fb
patch 8.1.1753: use of popup window mask is inefficient
Bram Moolenaar <Bram@vim.org>
parents:
17508
diff
changeset
|
3800 popup_update_mask(wp, width, height); |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3801 for (line = wp->w_winrow; |
17162
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3802 line < wp->w_winrow + height && line < screen_Rows; ++line) |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3803 for (col = wp->w_wincol; |
17510
a5427e35d0fb
patch 8.1.1753: use of popup window mask is inefficient
Bram Moolenaar <Bram@vim.org>
parents:
17508
diff
changeset
|
3804 col < wp->w_wincol + width - wp->w_popup_leftoff |
a5427e35d0fb
patch 8.1.1753: use of popup window mask is inefficient
Bram Moolenaar <Bram@vim.org>
parents:
17508
diff
changeset
|
3805 && col < screen_Columns; ++col) |
26165
7b07f361b1d4
patch 8.2.3614: zindex of popup windows not used when redrawing popup menu
Bram Moolenaar <Bram@vim.org>
parents:
26127
diff
changeset
|
3806 if (wp->w_zindex < POPUPMENU_ZINDEX |
7b07f361b1d4
patch 8.2.3614: zindex of popup windows not used when redrawing popup menu
Bram Moolenaar <Bram@vim.org>
parents:
26127
diff
changeset
|
3807 && pum_visible() |
7b07f361b1d4
patch 8.2.3614: zindex of popup windows not used when redrawing popup menu
Bram Moolenaar <Bram@vim.org>
parents:
26127
diff
changeset
|
3808 && pum_under_menu(line, col, FALSE)) |
7b07f361b1d4
patch 8.2.3614: zindex of popup windows not used when redrawing popup menu
Bram Moolenaar <Bram@vim.org>
parents:
26127
diff
changeset
|
3809 mask[line * screen_Columns + col] = POPUPMENU_ZINDEX; |
7b07f361b1d4
patch 8.2.3614: zindex of popup windows not used when redrawing popup menu
Bram Moolenaar <Bram@vim.org>
parents:
26127
diff
changeset
|
3810 else if (wp->w_popup_mask_cells == NULL |
17510
a5427e35d0fb
patch 8.1.1753: use of popup window mask is inefficient
Bram Moolenaar <Bram@vim.org>
parents:
17508
diff
changeset
|
3811 || !popup_masked(wp, width, height, col, line)) |
17162
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3812 mask[line * screen_Columns + col] = wp->w_zindex; |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3813 } |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3814 |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3815 // Only check which lines are to be updated if not already |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3816 // updating all lines. |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3817 if (mask == popup_mask_next) |
17506
74b6674b99fd
patch 8.1.1751: when redrawing popups plines_win() may be called often
Bram Moolenaar <Bram@vim.org>
parents:
17442
diff
changeset
|
3818 { |
74b6674b99fd
patch 8.1.1751: when redrawing popups plines_win() may be called often
Bram Moolenaar <Bram@vim.org>
parents:
17442
diff
changeset
|
3819 int *plines_cache = ALLOC_CLEAR_MULT(int, Rows); |
74b6674b99fd
patch 8.1.1751: when redrawing popups plines_win() may be called often
Bram Moolenaar <Bram@vim.org>
parents:
17442
diff
changeset
|
3820 win_T *prev_wp = NULL; |
74b6674b99fd
patch 8.1.1751: when redrawing popups plines_win() may be called often
Bram Moolenaar <Bram@vim.org>
parents:
17442
diff
changeset
|
3821 |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3822 for (line = 0; line < screen_Rows; ++line) |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3823 { |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3824 int col_done = 0; |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3825 |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3826 for (col = 0; col < screen_Columns; ++col) |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3827 { |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3828 int off = line * screen_Columns + col; |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3829 |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3830 if (popup_mask[off] != popup_mask_next[off]) |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3831 { |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3832 popup_mask[off] = popup_mask_next[off]; |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3833 |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3834 if (line >= cmdline_row) |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3835 { |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3836 // the command line needs to be cleared if text below |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3837 // the popup is now visible. |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3838 if (!msg_scrolled && popup_mask_next[off] == 0) |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3839 clear_cmdline = TRUE; |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3840 } |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3841 else if (col >= col_done) |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3842 { |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3843 linenr_T lnum; |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3844 int line_cp = line; |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3845 int col_cp = col; |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3846 |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3847 // The screen position "line" / "col" needs to be |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3848 // redrawn. Figure out what window that is and update |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3849 // w_redraw_top and w_redr_bot. Only needs to be done |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3850 // once for each window line. |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3851 wp = mouse_find_win(&line_cp, &col_cp, IGNORE_POPUP); |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3852 if (wp != NULL) |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3853 { |
21291
c6fc976a8741
patch 8.2.1196: build failure with normal features
Bram Moolenaar <Bram@vim.org>
parents:
21285
diff
changeset
|
3854 #if defined(FEAT_TERMINAL) |
21285
35a7cab0bdfd
patch 8.2.1193: terminal window not redrawn when dragging a popup window
Bram Moolenaar <Bram@vim.org>
parents:
21040
diff
changeset
|
3855 // A terminal window needs to be redrawn. |
35a7cab0bdfd
patch 8.2.1193: terminal window not redrawn when dragging a popup window
Bram Moolenaar <Bram@vim.org>
parents:
21040
diff
changeset
|
3856 if (bt_terminal(wp->w_buffer)) |
29732
89e1d67814a9
patch 9.0.0206: redraw flags are not named specifically
Bram Moolenaar <Bram@vim.org>
parents:
29660
diff
changeset
|
3857 redraw_win_later(wp, UPD_NOT_VALID); |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3858 else |
21291
c6fc976a8741
patch 8.2.1196: build failure with normal features
Bram Moolenaar <Bram@vim.org>
parents:
21285
diff
changeset
|
3859 #endif |
17843
9696c76f2213
patch 8.1.1918: redrawing popups is inefficient
Bram Moolenaar <Bram@vim.org>
parents:
17841
diff
changeset
|
3860 { |
21285
35a7cab0bdfd
patch 8.2.1193: terminal window not redrawn when dragging a popup window
Bram Moolenaar <Bram@vim.org>
parents:
21040
diff
changeset
|
3861 if (wp != prev_wp) |
35a7cab0bdfd
patch 8.2.1193: terminal window not redrawn when dragging a popup window
Bram Moolenaar <Bram@vim.org>
parents:
21040
diff
changeset
|
3862 { |
35a7cab0bdfd
patch 8.2.1193: terminal window not redrawn when dragging a popup window
Bram Moolenaar <Bram@vim.org>
parents:
21040
diff
changeset
|
3863 vim_memset(plines_cache, 0, |
35a7cab0bdfd
patch 8.2.1193: terminal window not redrawn when dragging a popup window
Bram Moolenaar <Bram@vim.org>
parents:
21040
diff
changeset
|
3864 sizeof(int) * Rows); |
35a7cab0bdfd
patch 8.2.1193: terminal window not redrawn when dragging a popup window
Bram Moolenaar <Bram@vim.org>
parents:
21040
diff
changeset
|
3865 prev_wp = wp; |
35a7cab0bdfd
patch 8.2.1193: terminal window not redrawn when dragging a popup window
Bram Moolenaar <Bram@vim.org>
parents:
21040
diff
changeset
|
3866 } |
35a7cab0bdfd
patch 8.2.1193: terminal window not redrawn when dragging a popup window
Bram Moolenaar <Bram@vim.org>
parents:
21040
diff
changeset
|
3867 |
35a7cab0bdfd
patch 8.2.1193: terminal window not redrawn when dragging a popup window
Bram Moolenaar <Bram@vim.org>
parents:
21040
diff
changeset
|
3868 if (line_cp >= wp->w_height) |
35a7cab0bdfd
patch 8.2.1193: terminal window not redrawn when dragging a popup window
Bram Moolenaar <Bram@vim.org>
parents:
21040
diff
changeset
|
3869 // In (or below) status line |
35a7cab0bdfd
patch 8.2.1193: terminal window not redrawn when dragging a popup window
Bram Moolenaar <Bram@vim.org>
parents:
21040
diff
changeset
|
3870 wp->w_redr_status = TRUE; |
35a7cab0bdfd
patch 8.2.1193: terminal window not redrawn when dragging a popup window
Bram Moolenaar <Bram@vim.org>
parents:
21040
diff
changeset
|
3871 else |
35a7cab0bdfd
patch 8.2.1193: terminal window not redrawn when dragging a popup window
Bram Moolenaar <Bram@vim.org>
parents:
21040
diff
changeset
|
3872 { |
35a7cab0bdfd
patch 8.2.1193: terminal window not redrawn when dragging a popup window
Bram Moolenaar <Bram@vim.org>
parents:
21040
diff
changeset
|
3873 // compute the position in the buffer line |
35a7cab0bdfd
patch 8.2.1193: terminal window not redrawn when dragging a popup window
Bram Moolenaar <Bram@vim.org>
parents:
21040
diff
changeset
|
3874 // from the position in the window |
28089
d3adf7b141a9
patch 8.2.4569: Coverity warning for not using a return value
Bram Moolenaar <Bram@vim.org>
parents:
27453
diff
changeset
|
3875 (void)mouse_comp_pos(wp, &line_cp, &col_cp, |
17843
9696c76f2213
patch 8.1.1918: redrawing popups is inefficient
Bram Moolenaar <Bram@vim.org>
parents:
17841
diff
changeset
|
3876 &lnum, plines_cache); |
21285
35a7cab0bdfd
patch 8.2.1193: terminal window not redrawn when dragging a popup window
Bram Moolenaar <Bram@vim.org>
parents:
21040
diff
changeset
|
3877 redrawWinline(wp, lnum); |
35a7cab0bdfd
patch 8.2.1193: terminal window not redrawn when dragging a popup window
Bram Moolenaar <Bram@vim.org>
parents:
21040
diff
changeset
|
3878 } |
17843
9696c76f2213
patch 8.1.1918: redrawing popups is inefficient
Bram Moolenaar <Bram@vim.org>
parents:
17841
diff
changeset
|
3879 } |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3880 |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3881 // This line is going to be redrawn, no need to |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3882 // check until the right side of the window. |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3883 col_done = wp->w_wincol + wp->w_width - 1; |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3884 } |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3885 } |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3886 } |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3887 } |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3888 } |
17506
74b6674b99fd
patch 8.1.1751: when redrawing popups plines_win() may be called often
Bram Moolenaar <Bram@vim.org>
parents:
17442
diff
changeset
|
3889 |
74b6674b99fd
patch 8.1.1751: when redrawing popups plines_win() may be called often
Bram Moolenaar <Bram@vim.org>
parents:
17442
diff
changeset
|
3890 vim_free(plines_cache); |
74b6674b99fd
patch 8.1.1751: when redrawing popups plines_win() may be called often
Bram Moolenaar <Bram@vim.org>
parents:
17442
diff
changeset
|
3891 } |
28187
d27a9eed9849
patch 8.2.4619: mapping is cancelled when mouse moves and popup is visible
Bram Moolenaar <Bram@vim.org>
parents:
28089
diff
changeset
|
3892 |
d27a9eed9849
patch 8.2.4619: mapping is cancelled when mouse moves and popup is visible
Bram Moolenaar <Bram@vim.org>
parents:
28089
diff
changeset
|
3893 update_popup_uses_mouse_move(); |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3894 } |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3895 |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3896 /* |
22403
3351d2cd3f1f
patch 8.2.1750: popup_setoptions() setting firstline fails if cursorline set
Bram Moolenaar <Bram@vim.org>
parents:
22377
diff
changeset
|
3897 * If the current window is a popup and something relevant changed, recompute |
3351d2cd3f1f
patch 8.2.1750: popup_setoptions() setting firstline fails if cursorline set
Bram Moolenaar <Bram@vim.org>
parents:
22377
diff
changeset
|
3898 * the position and size. |
3351d2cd3f1f
patch 8.2.1750: popup_setoptions() setting firstline fails if cursorline set
Bram Moolenaar <Bram@vim.org>
parents:
22377
diff
changeset
|
3899 */ |
3351d2cd3f1f
patch 8.2.1750: popup_setoptions() setting firstline fails if cursorline set
Bram Moolenaar <Bram@vim.org>
parents:
22377
diff
changeset
|
3900 void |
3351d2cd3f1f
patch 8.2.1750: popup_setoptions() setting firstline fails if cursorline set
Bram Moolenaar <Bram@vim.org>
parents:
22377
diff
changeset
|
3901 may_update_popup_position(void) |
3351d2cd3f1f
patch 8.2.1750: popup_setoptions() setting firstline fails if cursorline set
Bram Moolenaar <Bram@vim.org>
parents:
22377
diff
changeset
|
3902 { |
3351d2cd3f1f
patch 8.2.1750: popup_setoptions() setting firstline fails if cursorline set
Bram Moolenaar <Bram@vim.org>
parents:
22377
diff
changeset
|
3903 if (popup_is_popup(curwin) && popup_need_position_adjust(curwin)) |
3351d2cd3f1f
patch 8.2.1750: popup_setoptions() setting firstline fails if cursorline set
Bram Moolenaar <Bram@vim.org>
parents:
22377
diff
changeset
|
3904 popup_adjust_position(curwin); |
3351d2cd3f1f
patch 8.2.1750: popup_setoptions() setting firstline fails if cursorline set
Bram Moolenaar <Bram@vim.org>
parents:
22377
diff
changeset
|
3905 } |
3351d2cd3f1f
patch 8.2.1750: popup_setoptions() setting firstline fails if cursorline set
Bram Moolenaar <Bram@vim.org>
parents:
22377
diff
changeset
|
3906 |
3351d2cd3f1f
patch 8.2.1750: popup_setoptions() setting firstline fails if cursorline set
Bram Moolenaar <Bram@vim.org>
parents:
22377
diff
changeset
|
3907 /* |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3908 * Return a string of "len" spaces in IObuff. |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3909 */ |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3910 static char_u * |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3911 get_spaces(int len) |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3912 { |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3913 vim_memset(IObuff, ' ', (size_t)len); |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3914 IObuff[len] = NUL; |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3915 return IObuff; |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3916 } |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3917 |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3918 /* |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3919 * Update popup windows. They are drawn on top of normal windows. |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3920 * "win_update" is called for each popup window, lowest zindex first. |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3921 */ |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3922 void |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3923 update_popups(void (*win_update)(win_T *wp)) |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3924 { |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3925 win_T *wp; |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3926 int top_off; |
17235
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
3927 int left_extra; |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3928 int total_width; |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3929 int total_height; |
17119
b439e096a011
patch 8.1.1559: popup window title property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17117
diff
changeset
|
3930 int top_padding; |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3931 int popup_attr; |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3932 int border_attr[4]; |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3933 int border_char[8]; |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3934 char_u buf[MB_MAXBYTES]; |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3935 int row; |
17241
3ada3d207b33
patch 8.1.1620: no test for popup window with border and mask
Bram Moolenaar <Bram@vim.org>
parents:
17235
diff
changeset
|
3936 int wincol; |
17235
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
3937 int padcol = 0; |
22954
7b0aa7e2274f
patch 8.2.2024: flicker when redrawing a popup with a title and border
Bram Moolenaar <Bram@vim.org>
parents:
22886
diff
changeset
|
3938 int padendcol = 0; |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3939 int i; |
17200
db81cee3a0e1
patch 8.1.1599: compiler warning for uninitialized variable
Bram Moolenaar <Bram@vim.org>
parents:
17196
diff
changeset
|
3940 int sb_thumb_top = 0; |
db81cee3a0e1
patch 8.1.1599: compiler warning for uninitialized variable
Bram Moolenaar <Bram@vim.org>
parents:
17196
diff
changeset
|
3941 int sb_thumb_height = 0; |
17202
4b40e8821f56
patch 8.1.1600: cannot specify highlighting for popup window scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
17200
diff
changeset
|
3942 int attr_scroll = 0; |
4b40e8821f56
patch 8.1.1600: cannot specify highlighting for popup window scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
17200
diff
changeset
|
3943 int attr_thumb = 0; |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3944 |
23035
fabd80ec9620
patch 8.2.2064: terminal: cursor is on while redrawing, causing flicker
Bram Moolenaar <Bram@vim.org>
parents:
22954
diff
changeset
|
3945 // hide the cursor until redrawing is done. |
fabd80ec9620
patch 8.2.2064: terminal: cursor is on while redrawing, causing flicker
Bram Moolenaar <Bram@vim.org>
parents:
22954
diff
changeset
|
3946 cursor_off(); |
fabd80ec9620
patch 8.2.2064: terminal: cursor is on while redrawing, causing flicker
Bram Moolenaar <Bram@vim.org>
parents:
22954
diff
changeset
|
3947 |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3948 // Find the window with the lowest zindex that hasn't been updated yet, |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3949 // so that the window with a higher zindex is drawn later, thus goes on |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3950 // top. |
18613
fa995154904e
patch 8.1.2300: redraw breaks going through list of popup windows
Bram Moolenaar <Bram@vim.org>
parents:
18597
diff
changeset
|
3951 popup_reset_handled(POPUP_HANDLED_5); |
fa995154904e
patch 8.1.2300: redraw breaks going through list of popup windows
Bram Moolenaar <Bram@vim.org>
parents:
18597
diff
changeset
|
3952 while ((wp = find_next_popup(TRUE, POPUP_HANDLED_5)) != NULL) |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3953 { |
22954
7b0aa7e2274f
patch 8.2.2024: flicker when redrawing a popup with a title and border
Bram Moolenaar <Bram@vim.org>
parents:
22886
diff
changeset
|
3954 int title_len = 0; |
7b0aa7e2274f
patch 8.2.2024: flicker when redrawing a popup with a title and border
Bram Moolenaar <Bram@vim.org>
parents:
22886
diff
changeset
|
3955 int title_wincol; |
7b0aa7e2274f
patch 8.2.2024: flicker when redrawing a popup with a title and border
Bram Moolenaar <Bram@vim.org>
parents:
22886
diff
changeset
|
3956 |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3957 // This drawing uses the zindex of the popup window, so that it's on |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3958 // top of the text but doesn't draw when another popup with higher |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3959 // zindex is on top of the character. |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3960 screen_zindex = wp->w_zindex; |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3961 |
17162
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3962 // Set flags in popup_transparent[] for masked cells. |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3963 update_popup_transparent(wp, 1); |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
3964 |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3965 // adjust w_winrow and w_wincol for border and padding, since |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3966 // win_update() doesn't handle them. |
17119
b439e096a011
patch 8.1.1559: popup window title property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17117
diff
changeset
|
3967 top_off = popup_top_extra(wp); |
17235
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
3968 left_extra = wp->w_popup_padding[3] + wp->w_popup_border[3] |
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
3969 - wp->w_popup_leftoff; |
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
3970 if (wp->w_wincol + left_extra < 0) |
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
3971 left_extra = -wp->w_wincol; |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3972 wp->w_winrow += top_off; |
17235
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
3973 wp->w_wincol += left_extra; |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3974 |
17194
f4c6c1bc5e41
patch 8.1.1596: when resizing the screen may draw popup in wrong position
Bram Moolenaar <Bram@vim.org>
parents:
17180
diff
changeset
|
3975 // Draw the popup text, unless it's off screen. |
f4c6c1bc5e41
patch 8.1.1596: when resizing the screen may draw popup in wrong position
Bram Moolenaar <Bram@vim.org>
parents:
17180
diff
changeset
|
3976 if (wp->w_winrow < screen_Rows && wp->w_wincol < screen_Columns) |
17897
fa032e079825
patch 8.1.1945: popup window "firstline" cannot be reset
Bram Moolenaar <Bram@vim.org>
parents:
17879
diff
changeset
|
3977 { |
22377
b2cb2a321af9
patch 8.2.1737: cursor line highlight in popup window is not always updated
Bram Moolenaar <Bram@vim.org>
parents:
22367
diff
changeset
|
3978 // May need to update the "cursorline" highlighting, which may also |
b2cb2a321af9
patch 8.2.1737: cursor line highlight in popup window is not always updated
Bram Moolenaar <Bram@vim.org>
parents:
22367
diff
changeset
|
3979 // change "topline" |
b2cb2a321af9
patch 8.2.1737: cursor line highlight in popup window is not always updated
Bram Moolenaar <Bram@vim.org>
parents:
22367
diff
changeset
|
3980 if (wp->w_popup_last_curline != wp->w_cursor.lnum) |
b2cb2a321af9
patch 8.2.1737: cursor line highlight in popup window is not always updated
Bram Moolenaar <Bram@vim.org>
parents:
22367
diff
changeset
|
3981 popup_highlight_curline(wp); |
b2cb2a321af9
patch 8.2.1737: cursor line highlight in popup window is not always updated
Bram Moolenaar <Bram@vim.org>
parents:
22367
diff
changeset
|
3982 |
17194
f4c6c1bc5e41
patch 8.1.1596: when resizing the screen may draw popup in wrong position
Bram Moolenaar <Bram@vim.org>
parents:
17180
diff
changeset
|
3983 win_update(wp); |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3984 |
17897
fa032e079825
patch 8.1.1945: popup window "firstline" cannot be reset
Bram Moolenaar <Bram@vim.org>
parents:
17879
diff
changeset
|
3985 // move the cursor into the visible lines, otherwise executing |
fa032e079825
patch 8.1.1945: popup window "firstline" cannot be reset
Bram Moolenaar <Bram@vim.org>
parents:
17879
diff
changeset
|
3986 // commands with win_execute() may cause the text to jump. |
fa032e079825
patch 8.1.1945: popup window "firstline" cannot be reset
Bram Moolenaar <Bram@vim.org>
parents:
17879
diff
changeset
|
3987 if (wp->w_cursor.lnum < wp->w_topline) |
fa032e079825
patch 8.1.1945: popup window "firstline" cannot be reset
Bram Moolenaar <Bram@vim.org>
parents:
17879
diff
changeset
|
3988 wp->w_cursor.lnum = wp->w_topline; |
fa032e079825
patch 8.1.1945: popup window "firstline" cannot be reset
Bram Moolenaar <Bram@vim.org>
parents:
17879
diff
changeset
|
3989 else if (wp->w_cursor.lnum >= wp->w_botline) |
fa032e079825
patch 8.1.1945: popup window "firstline" cannot be reset
Bram Moolenaar <Bram@vim.org>
parents:
17879
diff
changeset
|
3990 wp->w_cursor.lnum = wp->w_botline - 1; |
fa032e079825
patch 8.1.1945: popup window "firstline" cannot be reset
Bram Moolenaar <Bram@vim.org>
parents:
17879
diff
changeset
|
3991 } |
fa032e079825
patch 8.1.1945: popup window "firstline" cannot be reset
Bram Moolenaar <Bram@vim.org>
parents:
17879
diff
changeset
|
3992 |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
3993 wp->w_winrow -= top_off; |
17235
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
3994 wp->w_wincol -= left_extra; |
22886
38324d4f1c94
patch 8.2.1990: cursor position wrong in terminal popup with finished job
Bram Moolenaar <Bram@vim.org>
parents:
22820
diff
changeset
|
3995 |
38324d4f1c94
patch 8.2.1990: cursor position wrong in terminal popup with finished job
Bram Moolenaar <Bram@vim.org>
parents:
22820
diff
changeset
|
3996 // Add offset for border and padding if not done already. |
38324d4f1c94
patch 8.2.1990: cursor position wrong in terminal popup with finished job
Bram Moolenaar <Bram@vim.org>
parents:
22820
diff
changeset
|
3997 if ((wp->w_flags & WFLAG_WCOL_OFF_ADDED) == 0) |
38324d4f1c94
patch 8.2.1990: cursor position wrong in terminal popup with finished job
Bram Moolenaar <Bram@vim.org>
parents:
22820
diff
changeset
|
3998 { |
38324d4f1c94
patch 8.2.1990: cursor position wrong in terminal popup with finished job
Bram Moolenaar <Bram@vim.org>
parents:
22820
diff
changeset
|
3999 wp->w_wcol += left_extra; |
38324d4f1c94
patch 8.2.1990: cursor position wrong in terminal popup with finished job
Bram Moolenaar <Bram@vim.org>
parents:
22820
diff
changeset
|
4000 wp->w_flags |= WFLAG_WCOL_OFF_ADDED; |
38324d4f1c94
patch 8.2.1990: cursor position wrong in terminal popup with finished job
Bram Moolenaar <Bram@vim.org>
parents:
22820
diff
changeset
|
4001 } |
38324d4f1c94
patch 8.2.1990: cursor position wrong in terminal popup with finished job
Bram Moolenaar <Bram@vim.org>
parents:
22820
diff
changeset
|
4002 if ((wp->w_flags & WFLAG_WROW_OFF_ADDED) == 0) |
19542
9e428147e4ee
patch 8.2.0328: no redraw when leaving term-normal mode in popup terminal
Bram Moolenaar <Bram@vim.org>
parents:
19540
diff
changeset
|
4003 { |
9e428147e4ee
patch 8.2.0328: no redraw when leaving term-normal mode in popup terminal
Bram Moolenaar <Bram@vim.org>
parents:
19540
diff
changeset
|
4004 wp->w_wrow += top_off; |
22886
38324d4f1c94
patch 8.2.1990: cursor position wrong in terminal popup with finished job
Bram Moolenaar <Bram@vim.org>
parents:
22820
diff
changeset
|
4005 wp->w_flags |= WFLAG_WROW_OFF_ADDED; |
19542
9e428147e4ee
patch 8.2.0328: no redraw when leaving term-normal mode in popup terminal
Bram Moolenaar <Bram@vim.org>
parents:
19540
diff
changeset
|
4006 } |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4007 |
28279
8ef5c996df31
patch 8.2.4665: popup with "minwidth" and scrollbar not updated properly
Bram Moolenaar <Bram@vim.org>
parents:
28187
diff
changeset
|
4008 total_width = popup_width(wp) - wp->w_popup_rightoff; |
17235
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
4009 total_height = popup_height(wp); |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4010 popup_attr = get_wcr_attr(wp); |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4011 |
17551
8cca2654d459
patch 8.1.1773: the preview popup window may be too far to the right
Bram Moolenaar <Bram@vim.org>
parents:
17545
diff
changeset
|
4012 if (wp->w_winrow + total_height > cmdline_row) |
8cca2654d459
patch 8.1.1773: the preview popup window may be too far to the right
Bram Moolenaar <Bram@vim.org>
parents:
17545
diff
changeset
|
4013 wp->w_popup_flags |= POPF_ON_CMDLINE; |
8cca2654d459
patch 8.1.1773: the preview popup window may be too far to the right
Bram Moolenaar <Bram@vim.org>
parents:
17545
diff
changeset
|
4014 else |
8cca2654d459
patch 8.1.1773: the preview popup window may be too far to the right
Bram Moolenaar <Bram@vim.org>
parents:
17545
diff
changeset
|
4015 wp->w_popup_flags &= ~POPF_ON_CMDLINE; |
8cca2654d459
patch 8.1.1773: the preview popup window may be too far to the right
Bram Moolenaar <Bram@vim.org>
parents:
17545
diff
changeset
|
4016 |
8cca2654d459
patch 8.1.1773: the preview popup window may be too far to the right
Bram Moolenaar <Bram@vim.org>
parents:
17545
diff
changeset
|
4017 |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4018 // We can only use these line drawing characters when 'encoding' is |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4019 // "utf-8" and 'ambiwidth' is "single". |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4020 if (enc_utf8 && *p_ambw == 's') |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4021 { |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4022 border_char[0] = border_char[2] = 0x2550; |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4023 border_char[1] = border_char[3] = 0x2551; |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4024 border_char[4] = 0x2554; |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4025 border_char[5] = 0x2557; |
17580
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
4026 border_char[6] = (wp->w_popup_flags & POPF_RESIZE) |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
4027 ? 0x21f2 : 0x255d; |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4028 border_char[7] = 0x255a; |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4029 } |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4030 else |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4031 { |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4032 border_char[0] = border_char[2] = '-'; |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4033 border_char[1] = border_char[3] = '|'; |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4034 for (i = 4; i < 8; ++i) |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4035 border_char[i] = '+'; |
17580
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
4036 if (wp->w_popup_flags & POPF_RESIZE) |
d5e5d0fc3fa8
patch 8.1.1787: cannot resize a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17578
diff
changeset
|
4037 border_char[6] = '@'; |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4038 } |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4039 for (i = 0; i < 8; ++i) |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4040 if (wp->w_border_char[i] != 0) |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4041 border_char[i] = wp->w_border_char[i]; |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4042 |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4043 for (i = 0; i < 4; ++i) |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4044 { |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4045 border_attr[i] = popup_attr; |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4046 if (wp->w_border_highlight[i] != NULL) |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4047 border_attr[i] = syn_name2attr(wp->w_border_highlight[i]); |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4048 } |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4049 |
22954
7b0aa7e2274f
patch 8.2.2024: flicker when redrawing a popup with a title and border
Bram Moolenaar <Bram@vim.org>
parents:
22886
diff
changeset
|
4050 // Title goes on top of border or padding. |
7b0aa7e2274f
patch 8.2.2024: flicker when redrawing a popup with a title and border
Bram Moolenaar <Bram@vim.org>
parents:
22886
diff
changeset
|
4051 title_wincol = wp->w_wincol + 1; |
7b0aa7e2274f
patch 8.2.2024: flicker when redrawing a popup with a title and border
Bram Moolenaar <Bram@vim.org>
parents:
22886
diff
changeset
|
4052 if (wp->w_popup_title != NULL) |
7b0aa7e2274f
patch 8.2.2024: flicker when redrawing a popup with a title and border
Bram Moolenaar <Bram@vim.org>
parents:
22886
diff
changeset
|
4053 { |
25535
7cb1597067e0
patch 8.2.3304: popup window title with wide characters is truncated
Bram Moolenaar <Bram@vim.org>
parents:
25384
diff
changeset
|
4054 title_len = vim_strsize(wp->w_popup_title); |
24709
9d304d363ab6
patch 8.2.2893: multi-byte text in popup title shows up wrong
Bram Moolenaar <Bram@vim.org>
parents:
23998
diff
changeset
|
4055 |
9d304d363ab6
patch 8.2.2893: multi-byte text in popup title shows up wrong
Bram Moolenaar <Bram@vim.org>
parents:
23998
diff
changeset
|
4056 // truncate the title if too long |
9d304d363ab6
patch 8.2.2893: multi-byte text in popup title shows up wrong
Bram Moolenaar <Bram@vim.org>
parents:
23998
diff
changeset
|
4057 if (title_len > total_width - 2) |
9d304d363ab6
patch 8.2.2893: multi-byte text in popup title shows up wrong
Bram Moolenaar <Bram@vim.org>
parents:
23998
diff
changeset
|
4058 { |
9d304d363ab6
patch 8.2.2893: multi-byte text in popup title shows up wrong
Bram Moolenaar <Bram@vim.org>
parents:
23998
diff
changeset
|
4059 int title_byte_len = (int)STRLEN(wp->w_popup_title); |
9d304d363ab6
patch 8.2.2893: multi-byte text in popup title shows up wrong
Bram Moolenaar <Bram@vim.org>
parents:
23998
diff
changeset
|
4060 char_u *title_text = alloc(title_byte_len + 1); |
9d304d363ab6
patch 8.2.2893: multi-byte text in popup title shows up wrong
Bram Moolenaar <Bram@vim.org>
parents:
23998
diff
changeset
|
4061 |
9d304d363ab6
patch 8.2.2893: multi-byte text in popup title shows up wrong
Bram Moolenaar <Bram@vim.org>
parents:
23998
diff
changeset
|
4062 if (title_text != NULL) |
9d304d363ab6
patch 8.2.2893: multi-byte text in popup title shows up wrong
Bram Moolenaar <Bram@vim.org>
parents:
23998
diff
changeset
|
4063 { |
9d304d363ab6
patch 8.2.2893: multi-byte text in popup title shows up wrong
Bram Moolenaar <Bram@vim.org>
parents:
23998
diff
changeset
|
4064 trunc_string(wp->w_popup_title, title_text, |
9d304d363ab6
patch 8.2.2893: multi-byte text in popup title shows up wrong
Bram Moolenaar <Bram@vim.org>
parents:
23998
diff
changeset
|
4065 total_width - 2, title_byte_len + 1); |
9d304d363ab6
patch 8.2.2893: multi-byte text in popup title shows up wrong
Bram Moolenaar <Bram@vim.org>
parents:
23998
diff
changeset
|
4066 screen_puts(title_text, wp->w_winrow, title_wincol, |
9d304d363ab6
patch 8.2.2893: multi-byte text in popup title shows up wrong
Bram Moolenaar <Bram@vim.org>
parents:
23998
diff
changeset
|
4067 wp->w_popup_border[0] > 0 |
9d304d363ab6
patch 8.2.2893: multi-byte text in popup title shows up wrong
Bram Moolenaar <Bram@vim.org>
parents:
23998
diff
changeset
|
4068 ? border_attr[0] : popup_attr); |
9d304d363ab6
patch 8.2.2893: multi-byte text in popup title shows up wrong
Bram Moolenaar <Bram@vim.org>
parents:
23998
diff
changeset
|
4069 vim_free(title_text); |
9d304d363ab6
patch 8.2.2893: multi-byte text in popup title shows up wrong
Bram Moolenaar <Bram@vim.org>
parents:
23998
diff
changeset
|
4070 } |
9d304d363ab6
patch 8.2.2893: multi-byte text in popup title shows up wrong
Bram Moolenaar <Bram@vim.org>
parents:
23998
diff
changeset
|
4071 |
9d304d363ab6
patch 8.2.2893: multi-byte text in popup title shows up wrong
Bram Moolenaar <Bram@vim.org>
parents:
23998
diff
changeset
|
4072 title_len = total_width - 2; |
9d304d363ab6
patch 8.2.2893: multi-byte text in popup title shows up wrong
Bram Moolenaar <Bram@vim.org>
parents:
23998
diff
changeset
|
4073 } |
9d304d363ab6
patch 8.2.2893: multi-byte text in popup title shows up wrong
Bram Moolenaar <Bram@vim.org>
parents:
23998
diff
changeset
|
4074 else |
9d304d363ab6
patch 8.2.2893: multi-byte text in popup title shows up wrong
Bram Moolenaar <Bram@vim.org>
parents:
23998
diff
changeset
|
4075 screen_puts(wp->w_popup_title, wp->w_winrow, title_wincol, |
22954
7b0aa7e2274f
patch 8.2.2024: flicker when redrawing a popup with a title and border
Bram Moolenaar <Bram@vim.org>
parents:
22886
diff
changeset
|
4076 wp->w_popup_border[0] > 0 ? border_attr[0] : popup_attr); |
7b0aa7e2274f
patch 8.2.2024: flicker when redrawing a popup with a title and border
Bram Moolenaar <Bram@vim.org>
parents:
22886
diff
changeset
|
4077 } |
7b0aa7e2274f
patch 8.2.2024: flicker when redrawing a popup with a title and border
Bram Moolenaar <Bram@vim.org>
parents:
22886
diff
changeset
|
4078 |
17241
3ada3d207b33
patch 8.1.1620: no test for popup window with border and mask
Bram Moolenaar <Bram@vim.org>
parents:
17235
diff
changeset
|
4079 wincol = wp->w_wincol - wp->w_popup_leftoff; |
17119
b439e096a011
patch 8.1.1559: popup window title property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17117
diff
changeset
|
4080 top_padding = wp->w_popup_padding[0]; |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4081 if (wp->w_popup_border[0] > 0) |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4082 { |
22954
7b0aa7e2274f
patch 8.2.2024: flicker when redrawing a popup with a title and border
Bram Moolenaar <Bram@vim.org>
parents:
22886
diff
changeset
|
4083 // top border; do not draw over the title |
7b0aa7e2274f
patch 8.2.2024: flicker when redrawing a popup with a title and border
Bram Moolenaar <Bram@vim.org>
parents:
22886
diff
changeset
|
4084 if (title_len > 0) |
7b0aa7e2274f
patch 8.2.2024: flicker when redrawing a popup with a title and border
Bram Moolenaar <Bram@vim.org>
parents:
22886
diff
changeset
|
4085 { |
7b0aa7e2274f
patch 8.2.2024: flicker when redrawing a popup with a title and border
Bram Moolenaar <Bram@vim.org>
parents:
22886
diff
changeset
|
4086 screen_fill(wp->w_winrow, wp->w_winrow + 1, |
7b0aa7e2274f
patch 8.2.2024: flicker when redrawing a popup with a title and border
Bram Moolenaar <Bram@vim.org>
parents:
22886
diff
changeset
|
4087 wincol < 0 ? 0 : wincol, title_wincol, |
7b0aa7e2274f
patch 8.2.2024: flicker when redrawing a popup with a title and border
Bram Moolenaar <Bram@vim.org>
parents:
22886
diff
changeset
|
4088 wp->w_popup_border[3] != 0 && wp->w_popup_leftoff == 0 |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4089 ? border_char[4] : border_char[0], |
22954
7b0aa7e2274f
patch 8.2.2024: flicker when redrawing a popup with a title and border
Bram Moolenaar <Bram@vim.org>
parents:
22886
diff
changeset
|
4090 border_char[0], border_attr[0]); |
7b0aa7e2274f
patch 8.2.2024: flicker when redrawing a popup with a title and border
Bram Moolenaar <Bram@vim.org>
parents:
22886
diff
changeset
|
4091 screen_fill(wp->w_winrow, wp->w_winrow + 1, |
7b0aa7e2274f
patch 8.2.2024: flicker when redrawing a popup with a title and border
Bram Moolenaar <Bram@vim.org>
parents:
22886
diff
changeset
|
4092 title_wincol + title_len, wincol + total_width, |
7b0aa7e2274f
patch 8.2.2024: flicker when redrawing a popup with a title and border
Bram Moolenaar <Bram@vim.org>
parents:
22886
diff
changeset
|
4093 border_char[0], border_char[0], border_attr[0]); |
7b0aa7e2274f
patch 8.2.2024: flicker when redrawing a popup with a title and border
Bram Moolenaar <Bram@vim.org>
parents:
22886
diff
changeset
|
4094 } |
7b0aa7e2274f
patch 8.2.2024: flicker when redrawing a popup with a title and border
Bram Moolenaar <Bram@vim.org>
parents:
22886
diff
changeset
|
4095 else |
7b0aa7e2274f
patch 8.2.2024: flicker when redrawing a popup with a title and border
Bram Moolenaar <Bram@vim.org>
parents:
22886
diff
changeset
|
4096 { |
7b0aa7e2274f
patch 8.2.2024: flicker when redrawing a popup with a title and border
Bram Moolenaar <Bram@vim.org>
parents:
22886
diff
changeset
|
4097 screen_fill(wp->w_winrow, wp->w_winrow + 1, |
7b0aa7e2274f
patch 8.2.2024: flicker when redrawing a popup with a title and border
Bram Moolenaar <Bram@vim.org>
parents:
22886
diff
changeset
|
4098 wincol < 0 ? 0 : wincol, wincol + total_width, |
7b0aa7e2274f
patch 8.2.2024: flicker when redrawing a popup with a title and border
Bram Moolenaar <Bram@vim.org>
parents:
22886
diff
changeset
|
4099 wp->w_popup_border[3] != 0 && wp->w_popup_leftoff == 0 |
7b0aa7e2274f
patch 8.2.2024: flicker when redrawing a popup with a title and border
Bram Moolenaar <Bram@vim.org>
parents:
22886
diff
changeset
|
4100 ? border_char[4] : border_char[0], |
7b0aa7e2274f
patch 8.2.2024: flicker when redrawing a popup with a title and border
Bram Moolenaar <Bram@vim.org>
parents:
22886
diff
changeset
|
4101 border_char[0], border_attr[0]); |
7b0aa7e2274f
patch 8.2.2024: flicker when redrawing a popup with a title and border
Bram Moolenaar <Bram@vim.org>
parents:
22886
diff
changeset
|
4102 } |
28279
8ef5c996df31
patch 8.2.4665: popup with "minwidth" and scrollbar not updated properly
Bram Moolenaar <Bram@vim.org>
parents:
28187
diff
changeset
|
4103 if (wp->w_popup_border[1] > 0) |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4104 { |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4105 buf[mb_char2bytes(border_char[5], buf)] = NUL; |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4106 screen_puts(buf, wp->w_winrow, |
17241
3ada3d207b33
patch 8.1.1620: no test for popup window with border and mask
Bram Moolenaar <Bram@vim.org>
parents:
17235
diff
changeset
|
4107 wincol + total_width - 1, border_attr[1]); |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4108 } |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4109 } |
17119
b439e096a011
patch 8.1.1559: popup window title property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17117
diff
changeset
|
4110 else if (wp->w_popup_padding[0] == 0 && popup_top_extra(wp) > 0) |
b439e096a011
patch 8.1.1559: popup window title property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17117
diff
changeset
|
4111 top_padding = 1; |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4112 |
17235
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
4113 if (top_padding > 0 || wp->w_popup_padding[2] > 0) |
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
4114 { |
17241
3ada3d207b33
patch 8.1.1620: no test for popup window with border and mask
Bram Moolenaar <Bram@vim.org>
parents:
17235
diff
changeset
|
4115 padcol = wincol + wp->w_popup_border[3]; |
22954
7b0aa7e2274f
patch 8.2.2024: flicker when redrawing a popup with a title and border
Bram Moolenaar <Bram@vim.org>
parents:
22886
diff
changeset
|
4116 padendcol = wp->w_wincol + total_width - wp->w_popup_border[1] |
17235
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
4117 - wp->w_has_scrollbar; |
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
4118 if (padcol < 0) |
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
4119 { |
22954
7b0aa7e2274f
patch 8.2.2024: flicker when redrawing a popup with a title and border
Bram Moolenaar <Bram@vim.org>
parents:
22886
diff
changeset
|
4120 padendcol += padcol; |
17235
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
4121 padcol = 0; |
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
4122 } |
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
4123 } |
17119
b439e096a011
patch 8.1.1559: popup window title property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17117
diff
changeset
|
4124 if (top_padding > 0) |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4125 { |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4126 row = wp->w_winrow + wp->w_popup_border[0]; |
23173
6620b51e2916
patch 8.2.2132: padding not drawn properly for popup window with title
Bram Moolenaar <Bram@vim.org>
parents:
23035
diff
changeset
|
4127 if (title_len > 0 && row == wp->w_winrow) |
22954
7b0aa7e2274f
patch 8.2.2024: flicker when redrawing a popup with a title and border
Bram Moolenaar <Bram@vim.org>
parents:
22886
diff
changeset
|
4128 { |
23173
6620b51e2916
patch 8.2.2132: padding not drawn properly for popup window with title
Bram Moolenaar <Bram@vim.org>
parents:
23035
diff
changeset
|
4129 // top padding and no border; do not draw over the title |
6620b51e2916
patch 8.2.2132: padding not drawn properly for popup window with title
Bram Moolenaar <Bram@vim.org>
parents:
23035
diff
changeset
|
4130 screen_fill(row, row + 1, padcol, title_wincol, |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4131 ' ', ' ', popup_attr); |
23173
6620b51e2916
patch 8.2.2132: padding not drawn properly for popup window with title
Bram Moolenaar <Bram@vim.org>
parents:
23035
diff
changeset
|
4132 screen_fill(row, row + 1, title_wincol + title_len, |
22954
7b0aa7e2274f
patch 8.2.2024: flicker when redrawing a popup with a title and border
Bram Moolenaar <Bram@vim.org>
parents:
22886
diff
changeset
|
4133 padendcol, ' ', ' ', popup_attr); |
23173
6620b51e2916
patch 8.2.2132: padding not drawn properly for popup window with title
Bram Moolenaar <Bram@vim.org>
parents:
23035
diff
changeset
|
4134 row += 1; |
6620b51e2916
patch 8.2.2132: padding not drawn properly for popup window with title
Bram Moolenaar <Bram@vim.org>
parents:
23035
diff
changeset
|
4135 top_padding -= 1; |
22954
7b0aa7e2274f
patch 8.2.2024: flicker when redrawing a popup with a title and border
Bram Moolenaar <Bram@vim.org>
parents:
22886
diff
changeset
|
4136 } |
23173
6620b51e2916
patch 8.2.2132: padding not drawn properly for popup window with title
Bram Moolenaar <Bram@vim.org>
parents:
23035
diff
changeset
|
4137 screen_fill(row, row + top_padding, padcol, padendcol, |
22954
7b0aa7e2274f
patch 8.2.2024: flicker when redrawing a popup with a title and border
Bram Moolenaar <Bram@vim.org>
parents:
22886
diff
changeset
|
4138 ' ', ' ', popup_attr); |
17634
6e6a84993444
patch 8.1.1814: a long title in a popup window overflows
Bram Moolenaar <Bram@vim.org>
parents:
17626
diff
changeset
|
4139 } |
17119
b439e096a011
patch 8.1.1559: popup window title property not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
17117
diff
changeset
|
4140 |
17180
8581779aa16f
patch 8.1.1589: popup window does not indicate scroll position
Bram Moolenaar <Bram@vim.org>
parents:
17174
diff
changeset
|
4141 // Compute scrollbar thumb position and size. |
8581779aa16f
patch 8.1.1589: popup window does not indicate scroll position
Bram Moolenaar <Bram@vim.org>
parents:
17174
diff
changeset
|
4142 if (wp->w_has_scrollbar) |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4143 { |
18074
364a9be6a21e
patch 8.1.2032: scrollbar thumb wrong in popup window
Bram Moolenaar <Bram@vim.org>
parents:
18027
diff
changeset
|
4144 linenr_T linecount = wp->w_buffer->b_ml.ml_line_count; |
364a9be6a21e
patch 8.1.2032: scrollbar thumb wrong in popup window
Bram Moolenaar <Bram@vim.org>
parents:
18027
diff
changeset
|
4145 int height = wp->w_height; |
29036
71b766ba26a6
patch 8.2.5040: scrollbar thumb in scrolled popup not visible
Bram Moolenaar <Bram@vim.org>
parents:
29034
diff
changeset
|
4146 int last; |
18074
364a9be6a21e
patch 8.1.2032: scrollbar thumb wrong in popup window
Bram Moolenaar <Bram@vim.org>
parents:
18027
diff
changeset
|
4147 |
27453
c7f614c9ceb3
patch 8.2.4255: theoretical computation overflow
Bram Moolenaar <Bram@vim.org>
parents:
26986
diff
changeset
|
4148 sb_thumb_height = ((linenr_T)height * height + linecount / 2) |
c7f614c9ceb3
patch 8.2.4255: theoretical computation overflow
Bram Moolenaar <Bram@vim.org>
parents:
26986
diff
changeset
|
4149 / linecount; |
18074
364a9be6a21e
patch 8.1.2032: scrollbar thumb wrong in popup window
Bram Moolenaar <Bram@vim.org>
parents:
18027
diff
changeset
|
4150 if (wp->w_topline > 1 && sb_thumb_height == height) |
364a9be6a21e
patch 8.1.2032: scrollbar thumb wrong in popup window
Bram Moolenaar <Bram@vim.org>
parents:
18027
diff
changeset
|
4151 --sb_thumb_height; // scrolled, no full thumb |
17180
8581779aa16f
patch 8.1.1589: popup window does not indicate scroll position
Bram Moolenaar <Bram@vim.org>
parents:
17174
diff
changeset
|
4152 if (sb_thumb_height == 0) |
8581779aa16f
patch 8.1.1589: popup window does not indicate scroll position
Bram Moolenaar <Bram@vim.org>
parents:
17174
diff
changeset
|
4153 sb_thumb_height = 1; |
28279
8ef5c996df31
patch 8.2.4665: popup with "minwidth" and scrollbar not updated properly
Bram Moolenaar <Bram@vim.org>
parents:
28187
diff
changeset
|
4154 if (linecount <= wp->w_height || wp->w_height == 0) |
17274
6a7ba68d448e
patch 8.1.1636: crash when popup has fitting scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
17245
diff
changeset
|
4155 // it just fits, avoid divide by zero |
6a7ba68d448e
patch 8.1.1636: crash when popup has fitting scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
17245
diff
changeset
|
4156 sb_thumb_top = 0; |
6a7ba68d448e
patch 8.1.1636: crash when popup has fitting scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
17245
diff
changeset
|
4157 else |
6a7ba68d448e
patch 8.1.1636: crash when popup has fitting scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
17245
diff
changeset
|
4158 sb_thumb_top = (wp->w_topline - 1 |
6a7ba68d448e
patch 8.1.1636: crash when popup has fitting scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
17245
diff
changeset
|
4159 + (linecount / wp->w_height) / 2) |
17196
983950357c40
patch 8.1.1597: cannot scroll a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17194
diff
changeset
|
4160 * (wp->w_height - sb_thumb_height) |
983950357c40
patch 8.1.1597: cannot scroll a popup window with the mouse
Bram Moolenaar <Bram@vim.org>
parents:
17194
diff
changeset
|
4161 / (linecount - wp->w_height); |
18074
364a9be6a21e
patch 8.1.2032: scrollbar thumb wrong in popup window
Bram Moolenaar <Bram@vim.org>
parents:
18027
diff
changeset
|
4162 if (wp->w_topline > 1 && sb_thumb_top == 0 && height > 1) |
364a9be6a21e
patch 8.1.2032: scrollbar thumb wrong in popup window
Bram Moolenaar <Bram@vim.org>
parents:
18027
diff
changeset
|
4163 sb_thumb_top = 1; // show it's scrolled |
29036
71b766ba26a6
patch 8.2.5040: scrollbar thumb in scrolled popup not visible
Bram Moolenaar <Bram@vim.org>
parents:
29034
diff
changeset
|
4164 last = total_height - top_off - wp->w_popup_border[2]; |
71b766ba26a6
patch 8.2.5040: scrollbar thumb in scrolled popup not visible
Bram Moolenaar <Bram@vim.org>
parents:
29034
diff
changeset
|
4165 if (sb_thumb_top >= last) |
71b766ba26a6
patch 8.2.5040: scrollbar thumb in scrolled popup not visible
Bram Moolenaar <Bram@vim.org>
parents:
29034
diff
changeset
|
4166 // show at least one character |
29040
5d71ed834c03
patch 8.2.5042: scrollbar thumb in tall scrolled popup not visible
Bram Moolenaar <Bram@vim.org>
parents:
29036
diff
changeset
|
4167 sb_thumb_top = last - 1; |
18074
364a9be6a21e
patch 8.1.2032: scrollbar thumb wrong in popup window
Bram Moolenaar <Bram@vim.org>
parents:
18027
diff
changeset
|
4168 |
17202
4b40e8821f56
patch 8.1.1600: cannot specify highlighting for popup window scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
17200
diff
changeset
|
4169 if (wp->w_scrollbar_highlight != NULL) |
4b40e8821f56
patch 8.1.1600: cannot specify highlighting for popup window scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
17200
diff
changeset
|
4170 attr_scroll = syn_name2attr(wp->w_scrollbar_highlight); |
4b40e8821f56
patch 8.1.1600: cannot specify highlighting for popup window scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
17200
diff
changeset
|
4171 else |
4b40e8821f56
patch 8.1.1600: cannot specify highlighting for popup window scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
17200
diff
changeset
|
4172 attr_scroll = highlight_attr[HLF_PSB]; |
4b40e8821f56
patch 8.1.1600: cannot specify highlighting for popup window scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
17200
diff
changeset
|
4173 if (wp->w_thumb_highlight != NULL) |
4b40e8821f56
patch 8.1.1600: cannot specify highlighting for popup window scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
17200
diff
changeset
|
4174 attr_thumb = syn_name2attr(wp->w_thumb_highlight); |
4b40e8821f56
patch 8.1.1600: cannot specify highlighting for popup window scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
17200
diff
changeset
|
4175 else |
4b40e8821f56
patch 8.1.1600: cannot specify highlighting for popup window scrollbar
Bram Moolenaar <Bram@vim.org>
parents:
17200
diff
changeset
|
4176 attr_thumb = highlight_attr[HLF_PST]; |
17180
8581779aa16f
patch 8.1.1589: popup window does not indicate scroll position
Bram Moolenaar <Bram@vim.org>
parents:
17174
diff
changeset
|
4177 } |
8581779aa16f
patch 8.1.1589: popup window does not indicate scroll position
Bram Moolenaar <Bram@vim.org>
parents:
17174
diff
changeset
|
4178 |
8581779aa16f
patch 8.1.1589: popup window does not indicate scroll position
Bram Moolenaar <Bram@vim.org>
parents:
17174
diff
changeset
|
4179 for (i = wp->w_popup_border[0]; |
8581779aa16f
patch 8.1.1589: popup window does not indicate scroll position
Bram Moolenaar <Bram@vim.org>
parents:
17174
diff
changeset
|
4180 i < total_height - wp->w_popup_border[2]; ++i) |
8581779aa16f
patch 8.1.1589: popup window does not indicate scroll position
Bram Moolenaar <Bram@vim.org>
parents:
17174
diff
changeset
|
4181 { |
17235
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
4182 int pad_left; |
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
4183 // left and right padding only needed next to the body |
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
4184 int do_padding = |
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
4185 i >= wp->w_popup_border[0] + wp->w_popup_padding[0] |
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
4186 && i < total_height - wp->w_popup_border[2] |
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
4187 - wp->w_popup_padding[2]; |
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
4188 |
17180
8581779aa16f
patch 8.1.1589: popup window does not indicate scroll position
Bram Moolenaar <Bram@vim.org>
parents:
17174
diff
changeset
|
4189 row = wp->w_winrow + i; |
8581779aa16f
patch 8.1.1589: popup window does not indicate scroll position
Bram Moolenaar <Bram@vim.org>
parents:
17174
diff
changeset
|
4190 |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4191 // left border |
17241
3ada3d207b33
patch 8.1.1620: no test for popup window with border and mask
Bram Moolenaar <Bram@vim.org>
parents:
17235
diff
changeset
|
4192 if (wp->w_popup_border[3] > 0 && wincol >= 0) |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4193 { |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4194 buf[mb_char2bytes(border_char[3], buf)] = NUL; |
17241
3ada3d207b33
patch 8.1.1620: no test for popup window with border and mask
Bram Moolenaar <Bram@vim.org>
parents:
17235
diff
changeset
|
4195 screen_puts(buf, row, wincol, border_attr[3]); |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4196 } |
17235
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
4197 if (do_padding && wp->w_popup_padding[3] > 0) |
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
4198 { |
17241
3ada3d207b33
patch 8.1.1620: no test for popup window with border and mask
Bram Moolenaar <Bram@vim.org>
parents:
17235
diff
changeset
|
4199 int col = wincol + wp->w_popup_border[3]; |
3ada3d207b33
patch 8.1.1620: no test for popup window with border and mask
Bram Moolenaar <Bram@vim.org>
parents:
17235
diff
changeset
|
4200 |
17235
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
4201 // left padding |
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
4202 pad_left = wp->w_popup_padding[3]; |
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
4203 if (col < 0) |
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
4204 { |
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
4205 pad_left += col; |
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
4206 col = 0; |
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
4207 } |
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
4208 if (pad_left > 0) |
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
4209 screen_puts(get_spaces(pad_left), row, col, popup_attr); |
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
4210 } |
17180
8581779aa16f
patch 8.1.1589: popup window does not indicate scroll position
Bram Moolenaar <Bram@vim.org>
parents:
17174
diff
changeset
|
4211 // scrollbar |
8581779aa16f
patch 8.1.1589: popup window does not indicate scroll position
Bram Moolenaar <Bram@vim.org>
parents:
17174
diff
changeset
|
4212 if (wp->w_has_scrollbar) |
8581779aa16f
patch 8.1.1589: popup window does not indicate scroll position
Bram Moolenaar <Bram@vim.org>
parents:
17174
diff
changeset
|
4213 { |
8581779aa16f
patch 8.1.1589: popup window does not indicate scroll position
Bram Moolenaar <Bram@vim.org>
parents:
17174
diff
changeset
|
4214 int line = i - top_off; |
8581779aa16f
patch 8.1.1589: popup window does not indicate scroll position
Bram Moolenaar <Bram@vim.org>
parents:
17174
diff
changeset
|
4215 int scroll_col = wp->w_wincol + total_width - 1 |
8581779aa16f
patch 8.1.1589: popup window does not indicate scroll position
Bram Moolenaar <Bram@vim.org>
parents:
17174
diff
changeset
|
4216 - wp->w_popup_border[1]; |
8581779aa16f
patch 8.1.1589: popup window does not indicate scroll position
Bram Moolenaar <Bram@vim.org>
parents:
17174
diff
changeset
|
4217 |
8581779aa16f
patch 8.1.1589: popup window does not indicate scroll position
Bram Moolenaar <Bram@vim.org>
parents:
17174
diff
changeset
|
4218 if (line >= 0 && line < wp->w_height) |
8581779aa16f
patch 8.1.1589: popup window does not indicate scroll position
Bram Moolenaar <Bram@vim.org>
parents:
17174
diff
changeset
|
4219 screen_putchar(' ', row, scroll_col, |
8581779aa16f
patch 8.1.1589: popup window does not indicate scroll position
Bram Moolenaar <Bram@vim.org>
parents:
17174
diff
changeset
|
4220 line >= sb_thumb_top |
8581779aa16f
patch 8.1.1589: popup window does not indicate scroll position
Bram Moolenaar <Bram@vim.org>
parents:
17174
diff
changeset
|
4221 && line < sb_thumb_top + sb_thumb_height |
8581779aa16f
patch 8.1.1589: popup window does not indicate scroll position
Bram Moolenaar <Bram@vim.org>
parents:
17174
diff
changeset
|
4222 ? attr_thumb : attr_scroll); |
8581779aa16f
patch 8.1.1589: popup window does not indicate scroll position
Bram Moolenaar <Bram@vim.org>
parents:
17174
diff
changeset
|
4223 else |
8581779aa16f
patch 8.1.1589: popup window does not indicate scroll position
Bram Moolenaar <Bram@vim.org>
parents:
17174
diff
changeset
|
4224 screen_putchar(' ', row, scroll_col, popup_attr); |
8581779aa16f
patch 8.1.1589: popup window does not indicate scroll position
Bram Moolenaar <Bram@vim.org>
parents:
17174
diff
changeset
|
4225 } |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4226 // right border |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4227 if (wp->w_popup_border[1] > 0) |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4228 { |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4229 buf[mb_char2bytes(border_char[1], buf)] = NUL; |
17241
3ada3d207b33
patch 8.1.1620: no test for popup window with border and mask
Bram Moolenaar <Bram@vim.org>
parents:
17235
diff
changeset
|
4230 screen_puts(buf, row, wincol + total_width - 1, border_attr[1]); |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4231 } |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4232 // right padding |
17235
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
4233 if (do_padding && wp->w_popup_padding[1] > 0) |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4234 screen_puts(get_spaces(wp->w_popup_padding[1]), row, |
17241
3ada3d207b33
patch 8.1.1620: no test for popup window with border and mask
Bram Moolenaar <Bram@vim.org>
parents:
17235
diff
changeset
|
4235 wincol + wp->w_popup_border[3] |
17235
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
4236 + wp->w_popup_padding[3] + wp->w_width + wp->w_leftcol, |
2a97167854fc
patch 8.1.1617: no test for popup window with mask and position fixed
Bram Moolenaar <Bram@vim.org>
parents:
17231
diff
changeset
|
4237 popup_attr); |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4238 } |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4239 |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4240 if (wp->w_popup_padding[2] > 0) |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4241 { |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4242 // bottom padding |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4243 row = wp->w_winrow + wp->w_popup_border[0] |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4244 + wp->w_popup_padding[0] + wp->w_height; |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4245 screen_fill(row, row + wp->w_popup_padding[2], |
22954
7b0aa7e2274f
patch 8.2.2024: flicker when redrawing a popup with a title and border
Bram Moolenaar <Bram@vim.org>
parents:
22886
diff
changeset
|
4246 padcol, padendcol, ' ', ' ', popup_attr); |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4247 } |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4248 |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4249 if (wp->w_popup_border[2] > 0) |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4250 { |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4251 // bottom border |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4252 row = wp->w_winrow + total_height - 1; |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4253 screen_fill(row , row + 1, |
17241
3ada3d207b33
patch 8.1.1620: no test for popup window with border and mask
Bram Moolenaar <Bram@vim.org>
parents:
17235
diff
changeset
|
4254 wincol < 0 ? 0 : wincol, |
3ada3d207b33
patch 8.1.1620: no test for popup window with border and mask
Bram Moolenaar <Bram@vim.org>
parents:
17235
diff
changeset
|
4255 wincol + total_width, |
3ada3d207b33
patch 8.1.1620: no test for popup window with border and mask
Bram Moolenaar <Bram@vim.org>
parents:
17235
diff
changeset
|
4256 wp->w_popup_border[3] != 0 && wp->w_popup_leftoff == 0 |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4257 ? border_char[7] : border_char[2], |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4258 border_char[2], border_attr[2]); |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4259 if (wp->w_popup_border[1] > 0) |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4260 { |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4261 buf[mb_char2bytes(border_char[6], buf)] = NUL; |
17241
3ada3d207b33
patch 8.1.1620: no test for popup window with border and mask
Bram Moolenaar <Bram@vim.org>
parents:
17235
diff
changeset
|
4262 screen_puts(buf, row, wincol + total_width - 1, border_attr[2]); |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4263 } |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4264 } |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4265 |
17219
5169811b3044
patch 8.1.1609: the user cannot easily close a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17216
diff
changeset
|
4266 if (wp->w_popup_close == POPCLOSE_BUTTON) |
5169811b3044
patch 8.1.1609: the user cannot easily close a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17216
diff
changeset
|
4267 { |
5169811b3044
patch 8.1.1609: the user cannot easily close a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17216
diff
changeset
|
4268 // close button goes on top of anything at the top-right corner |
5169811b3044
patch 8.1.1609: the user cannot easily close a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17216
diff
changeset
|
4269 buf[mb_char2bytes('X', buf)] = NUL; |
17241
3ada3d207b33
patch 8.1.1620: no test for popup window with border and mask
Bram Moolenaar <Bram@vim.org>
parents:
17235
diff
changeset
|
4270 screen_puts(buf, wp->w_winrow, wincol + total_width - 1, |
17219
5169811b3044
patch 8.1.1609: the user cannot easily close a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17216
diff
changeset
|
4271 wp->w_popup_border[0] > 0 ? border_attr[0] : popup_attr); |
5169811b3044
patch 8.1.1609: the user cannot easily close a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17216
diff
changeset
|
4272 } |
5169811b3044
patch 8.1.1609: the user cannot easily close a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17216
diff
changeset
|
4273 |
17162
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
4274 update_popup_transparent(wp, 0); |
f16cee6adf29
patch 8.1.1580: cannot make part of a popup transparent
Bram Moolenaar <Bram@vim.org>
parents:
17151
diff
changeset
|
4275 |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4276 // Back to the normal zindex. |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4277 screen_zindex = 0; |
30222
b871016ea7c1
patch 9.0.0447: using :echowin while at the hit-enter prompt causes problems
Bram Moolenaar <Bram@vim.org>
parents:
30220
diff
changeset
|
4278 |
b871016ea7c1
patch 9.0.0447: using :echowin while at the hit-enter prompt causes problems
Bram Moolenaar <Bram@vim.org>
parents:
30220
diff
changeset
|
4279 #ifdef HAS_MESSAGE_WINDOW |
b871016ea7c1
patch 9.0.0447: using :echowin while at the hit-enter prompt causes problems
Bram Moolenaar <Bram@vim.org>
parents:
30220
diff
changeset
|
4280 // if this was the message window popup may start the timer now |
b871016ea7c1
patch 9.0.0447: using :echowin while at the hit-enter prompt causes problems
Bram Moolenaar <Bram@vim.org>
parents:
30220
diff
changeset
|
4281 may_start_message_win_timer(wp); |
b871016ea7c1
patch 9.0.0447: using :echowin while at the hit-enter prompt causes problems
Bram Moolenaar <Bram@vim.org>
parents:
30220
diff
changeset
|
4282 #endif |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4283 } |
21341
e562f5d1e2a4
patch 8.2.1221: memory leak when updating popup window
Bram Moolenaar <Bram@vim.org>
parents:
21291
diff
changeset
|
4284 |
e562f5d1e2a4
patch 8.2.1221: memory leak when updating popup window
Bram Moolenaar <Bram@vim.org>
parents:
21291
diff
changeset
|
4285 #if defined(FEAT_SEARCH_EXTRA) |
e562f5d1e2a4
patch 8.2.1221: memory leak when updating popup window
Bram Moolenaar <Bram@vim.org>
parents:
21291
diff
changeset
|
4286 // In case win_update() called start_search_hl(). |
e562f5d1e2a4
patch 8.2.1221: memory leak when updating popup window
Bram Moolenaar <Bram@vim.org>
parents:
21291
diff
changeset
|
4287 end_search_hl(); |
e562f5d1e2a4
patch 8.2.1221: memory leak when updating popup window
Bram Moolenaar <Bram@vim.org>
parents:
21291
diff
changeset
|
4288 #endif |
17055
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4289 } |
f4de7ccdfd8c
patch 8.1.1527: when moving popup window over the cmdline it is not redrawn
Bram Moolenaar <Bram@vim.org>
parents:
17051
diff
changeset
|
4290 |
17151
ebe9aab81898
patch 8.1.1575: callbacks may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
17149
diff
changeset
|
4291 /* |
ebe9aab81898
patch 8.1.1575: callbacks may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
17149
diff
changeset
|
4292 * Mark references in callbacks of one popup window. |
ebe9aab81898
patch 8.1.1575: callbacks may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
17149
diff
changeset
|
4293 */ |
ebe9aab81898
patch 8.1.1575: callbacks may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
17149
diff
changeset
|
4294 static int |
ebe9aab81898
patch 8.1.1575: callbacks may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
17149
diff
changeset
|
4295 set_ref_in_one_popup(win_T *wp, int copyID) |
ebe9aab81898
patch 8.1.1575: callbacks may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
17149
diff
changeset
|
4296 { |
ebe9aab81898
patch 8.1.1575: callbacks may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
17149
diff
changeset
|
4297 int abort = FALSE; |
ebe9aab81898
patch 8.1.1575: callbacks may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
17149
diff
changeset
|
4298 typval_T tv; |
ebe9aab81898
patch 8.1.1575: callbacks may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
17149
diff
changeset
|
4299 |
ebe9aab81898
patch 8.1.1575: callbacks may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
17149
diff
changeset
|
4300 if (wp->w_close_cb.cb_partial != NULL) |
ebe9aab81898
patch 8.1.1575: callbacks may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
17149
diff
changeset
|
4301 { |
ebe9aab81898
patch 8.1.1575: callbacks may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
17149
diff
changeset
|
4302 tv.v_type = VAR_PARTIAL; |
ebe9aab81898
patch 8.1.1575: callbacks may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
17149
diff
changeset
|
4303 tv.vval.v_partial = wp->w_close_cb.cb_partial; |
ebe9aab81898
patch 8.1.1575: callbacks may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
17149
diff
changeset
|
4304 abort = abort || set_ref_in_item(&tv, copyID, NULL, NULL); |
ebe9aab81898
patch 8.1.1575: callbacks may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
17149
diff
changeset
|
4305 } |
ebe9aab81898
patch 8.1.1575: callbacks may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
17149
diff
changeset
|
4306 if (wp->w_filter_cb.cb_partial != NULL) |
ebe9aab81898
patch 8.1.1575: callbacks may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
17149
diff
changeset
|
4307 { |
ebe9aab81898
patch 8.1.1575: callbacks may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
17149
diff
changeset
|
4308 tv.v_type = VAR_PARTIAL; |
ebe9aab81898
patch 8.1.1575: callbacks may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
17149
diff
changeset
|
4309 tv.vval.v_partial = wp->w_filter_cb.cb_partial; |
ebe9aab81898
patch 8.1.1575: callbacks may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
17149
diff
changeset
|
4310 abort = abort || set_ref_in_item(&tv, copyID, NULL, NULL); |
ebe9aab81898
patch 8.1.1575: callbacks may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
17149
diff
changeset
|
4311 } |
17168
1d30eb64a7a2
patch 8.1.1583: set_ref_in_list() only sets ref in items
Bram Moolenaar <Bram@vim.org>
parents:
17166
diff
changeset
|
4312 abort = abort || set_ref_in_list(wp->w_popup_mask, copyID); |
17151
ebe9aab81898
patch 8.1.1575: callbacks may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
17149
diff
changeset
|
4313 return abort; |
ebe9aab81898
patch 8.1.1575: callbacks may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
17149
diff
changeset
|
4314 } |
ebe9aab81898
patch 8.1.1575: callbacks may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
17149
diff
changeset
|
4315 |
ebe9aab81898
patch 8.1.1575: callbacks may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
17149
diff
changeset
|
4316 /* |
ebe9aab81898
patch 8.1.1575: callbacks may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
17149
diff
changeset
|
4317 * Set reference in callbacks of popup windows. |
ebe9aab81898
patch 8.1.1575: callbacks may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
17149
diff
changeset
|
4318 */ |
ebe9aab81898
patch 8.1.1575: callbacks may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
17149
diff
changeset
|
4319 int |
ebe9aab81898
patch 8.1.1575: callbacks may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
17149
diff
changeset
|
4320 set_ref_in_popups(int copyID) |
ebe9aab81898
patch 8.1.1575: callbacks may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
17149
diff
changeset
|
4321 { |
ebe9aab81898
patch 8.1.1575: callbacks may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
17149
diff
changeset
|
4322 int abort = FALSE; |
ebe9aab81898
patch 8.1.1575: callbacks may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
17149
diff
changeset
|
4323 win_T *wp; |
ebe9aab81898
patch 8.1.1575: callbacks may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
17149
diff
changeset
|
4324 tabpage_T *tp; |
ebe9aab81898
patch 8.1.1575: callbacks may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
17149
diff
changeset
|
4325 |
ebe9aab81898
patch 8.1.1575: callbacks may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
17149
diff
changeset
|
4326 for (wp = first_popupwin; !abort && wp != NULL; wp = wp->w_next) |
ebe9aab81898
patch 8.1.1575: callbacks may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
17149
diff
changeset
|
4327 abort = abort || set_ref_in_one_popup(wp, copyID); |
ebe9aab81898
patch 8.1.1575: callbacks may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
17149
diff
changeset
|
4328 |
ebe9aab81898
patch 8.1.1575: callbacks may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
17149
diff
changeset
|
4329 FOR_ALL_TABPAGES(tp) |
ebe9aab81898
patch 8.1.1575: callbacks may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
17149
diff
changeset
|
4330 { |
ebe9aab81898
patch 8.1.1575: callbacks may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
17149
diff
changeset
|
4331 for (wp = tp->tp_first_popupwin; !abort && wp != NULL; wp = wp->w_next) |
ebe9aab81898
patch 8.1.1575: callbacks may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
17149
diff
changeset
|
4332 abort = abort || set_ref_in_one_popup(wp, copyID); |
ebe9aab81898
patch 8.1.1575: callbacks may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
17149
diff
changeset
|
4333 if (abort) |
ebe9aab81898
patch 8.1.1575: callbacks may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
17149
diff
changeset
|
4334 break; |
ebe9aab81898
patch 8.1.1575: callbacks may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
17149
diff
changeset
|
4335 } |
ebe9aab81898
patch 8.1.1575: callbacks may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
17149
diff
changeset
|
4336 return abort; |
ebe9aab81898
patch 8.1.1575: callbacks may be garbage collected
Bram Moolenaar <Bram@vim.org>
parents:
17149
diff
changeset
|
4337 } |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
4338 |
18767
068337e86133
patch 8.1.2373: cannot build with +popupwin but without +quickfix
Bram Moolenaar <Bram@vim.org>
parents:
18763
diff
changeset
|
4339 int |
068337e86133
patch 8.1.2373: cannot build with +popupwin but without +quickfix
Bram Moolenaar <Bram@vim.org>
parents:
18763
diff
changeset
|
4340 popup_is_popup(win_T *wp) |
068337e86133
patch 8.1.2373: cannot build with +popupwin but without +quickfix
Bram Moolenaar <Bram@vim.org>
parents:
18763
diff
changeset
|
4341 { |
068337e86133
patch 8.1.2373: cannot build with +popupwin but without +quickfix
Bram Moolenaar <Bram@vim.org>
parents:
18763
diff
changeset
|
4342 return wp->w_popup_flags != 0; |
068337e86133
patch 8.1.2373: cannot build with +popupwin but without +quickfix
Bram Moolenaar <Bram@vim.org>
parents:
18763
diff
changeset
|
4343 } |
068337e86133
patch 8.1.2373: cannot build with +popupwin but without +quickfix
Bram Moolenaar <Bram@vim.org>
parents:
18763
diff
changeset
|
4344 |
068337e86133
patch 8.1.2373: cannot build with +popupwin but without +quickfix
Bram Moolenaar <Bram@vim.org>
parents:
18763
diff
changeset
|
4345 #if defined(FEAT_QUICKFIX) || defined(PROTO) |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
4346 /* |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
4347 * Find an existing popup used as the preview window, in the current tab page. |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
4348 * Return NULL if not found. |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
4349 */ |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
4350 win_T * |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
4351 popup_find_preview_window(void) |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
4352 { |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
4353 win_T *wp; |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
4354 |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
4355 // Preview window popup is always local to tab page. |
19888
435726a03481
patch 8.2.0500: using the same loop in many places
Bram Moolenaar <Bram@vim.org>
parents:
19647
diff
changeset
|
4356 FOR_ALL_POPUPWINS_IN_TAB(curtab, wp) |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
4357 if (wp->w_p_pvw) |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
4358 return wp; |
17545
1e45331bd2ab
patch 8.1.1770: cannot get the window ID of the popup preview window
Bram Moolenaar <Bram@vim.org>
parents:
17510
diff
changeset
|
4359 return NULL; |
1e45331bd2ab
patch 8.1.1770: cannot get the window ID of the popup preview window
Bram Moolenaar <Bram@vim.org>
parents:
17510
diff
changeset
|
4360 } |
1e45331bd2ab
patch 8.1.1770: cannot get the window ID of the popup preview window
Bram Moolenaar <Bram@vim.org>
parents:
17510
diff
changeset
|
4361 |
17767
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
4362 /* |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
4363 * Find an existing popup used as the info window, in the current tab page. |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
4364 * Return NULL if not found. |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
4365 */ |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
4366 win_T * |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
4367 popup_find_info_window(void) |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
4368 { |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
4369 win_T *wp; |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
4370 |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
4371 // info window popup is always local to tab page. |
19888
435726a03481
patch 8.2.0500: using the same loop in many places
Bram Moolenaar <Bram@vim.org>
parents:
19647
diff
changeset
|
4372 FOR_ALL_POPUPWINS_IN_TAB(curtab, wp) |
17767
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
4373 if (wp->w_popup_flags & POPF_INFO) |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
4374 return wp; |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
4375 return NULL; |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
4376 } |
17791
55c167b08c2b
patch 8.1.1892: missing index entry and option menu for 'completepopup'
Bram Moolenaar <Bram@vim.org>
parents:
17789
diff
changeset
|
4377 #endif |
17767
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
4378 |
17545
1e45331bd2ab
patch 8.1.1770: cannot get the window ID of the popup preview window
Bram Moolenaar <Bram@vim.org>
parents:
17510
diff
changeset
|
4379 void |
17817
e8a7029efa40
patch 8.1.1905: cannot set all properties of the info popup
Bram Moolenaar <Bram@vim.org>
parents:
17815
diff
changeset
|
4380 f_popup_findinfo(typval_T *argvars UNUSED, typval_T *rettv) |
e8a7029efa40
patch 8.1.1905: cannot set all properties of the info popup
Bram Moolenaar <Bram@vim.org>
parents:
17815
diff
changeset
|
4381 { |
18767
068337e86133
patch 8.1.2373: cannot build with +popupwin but without +quickfix
Bram Moolenaar <Bram@vim.org>
parents:
18763
diff
changeset
|
4382 #ifdef FEAT_QUICKFIX |
17817
e8a7029efa40
patch 8.1.1905: cannot set all properties of the info popup
Bram Moolenaar <Bram@vim.org>
parents:
17815
diff
changeset
|
4383 win_T *wp = popup_find_info_window(); |
e8a7029efa40
patch 8.1.1905: cannot set all properties of the info popup
Bram Moolenaar <Bram@vim.org>
parents:
17815
diff
changeset
|
4384 |
e8a7029efa40
patch 8.1.1905: cannot set all properties of the info popup
Bram Moolenaar <Bram@vim.org>
parents:
17815
diff
changeset
|
4385 rettv->vval.v_number = wp == NULL ? 0 : wp->w_id; |
18767
068337e86133
patch 8.1.2373: cannot build with +popupwin but without +quickfix
Bram Moolenaar <Bram@vim.org>
parents:
18763
diff
changeset
|
4386 #else |
068337e86133
patch 8.1.2373: cannot build with +popupwin but without +quickfix
Bram Moolenaar <Bram@vim.org>
parents:
18763
diff
changeset
|
4387 rettv->vval.v_number = 0; |
068337e86133
patch 8.1.2373: cannot build with +popupwin but without +quickfix
Bram Moolenaar <Bram@vim.org>
parents:
18763
diff
changeset
|
4388 #endif |
17817
e8a7029efa40
patch 8.1.1905: cannot set all properties of the info popup
Bram Moolenaar <Bram@vim.org>
parents:
17815
diff
changeset
|
4389 } |
e8a7029efa40
patch 8.1.1905: cannot set all properties of the info popup
Bram Moolenaar <Bram@vim.org>
parents:
17815
diff
changeset
|
4390 |
e8a7029efa40
patch 8.1.1905: cannot set all properties of the info popup
Bram Moolenaar <Bram@vim.org>
parents:
17815
diff
changeset
|
4391 void |
e8a7029efa40
patch 8.1.1905: cannot set all properties of the info popup
Bram Moolenaar <Bram@vim.org>
parents:
17815
diff
changeset
|
4392 f_popup_findpreview(typval_T *argvars UNUSED, typval_T *rettv) |
17545
1e45331bd2ab
patch 8.1.1770: cannot get the window ID of the popup preview window
Bram Moolenaar <Bram@vim.org>
parents:
17510
diff
changeset
|
4393 { |
18767
068337e86133
patch 8.1.2373: cannot build with +popupwin but without +quickfix
Bram Moolenaar <Bram@vim.org>
parents:
18763
diff
changeset
|
4394 #ifdef FEAT_QUICKFIX |
17545
1e45331bd2ab
patch 8.1.1770: cannot get the window ID of the popup preview window
Bram Moolenaar <Bram@vim.org>
parents:
17510
diff
changeset
|
4395 win_T *wp = popup_find_preview_window(); |
1e45331bd2ab
patch 8.1.1770: cannot get the window ID of the popup preview window
Bram Moolenaar <Bram@vim.org>
parents:
17510
diff
changeset
|
4396 |
1e45331bd2ab
patch 8.1.1770: cannot get the window ID of the popup preview window
Bram Moolenaar <Bram@vim.org>
parents:
17510
diff
changeset
|
4397 rettv->vval.v_number = wp == NULL ? 0 : wp->w_id; |
18767
068337e86133
patch 8.1.2373: cannot build with +popupwin but without +quickfix
Bram Moolenaar <Bram@vim.org>
parents:
18763
diff
changeset
|
4398 #else |
068337e86133
patch 8.1.2373: cannot build with +popupwin but without +quickfix
Bram Moolenaar <Bram@vim.org>
parents:
18763
diff
changeset
|
4399 rettv->vval.v_number = 0; |
068337e86133
patch 8.1.2373: cannot build with +popupwin but without +quickfix
Bram Moolenaar <Bram@vim.org>
parents:
18763
diff
changeset
|
4400 #endif |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
4401 } |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
4402 |
18767
068337e86133
patch 8.1.2373: cannot build with +popupwin but without +quickfix
Bram Moolenaar <Bram@vim.org>
parents:
18763
diff
changeset
|
4403 #if defined(FEAT_QUICKFIX) || defined(PROTO) |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
4404 /* |
17767
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
4405 * Create a popup to be used as the preview or info window. |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
4406 * NOTE: this makes the popup the current window, so that the file can be |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
4407 * edited. However, it must not remain to be the current window, the caller |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
4408 * must make sure of that. |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
4409 */ |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
4410 int |
17767
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
4411 popup_create_preview_window(int info) |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
4412 { |
17767
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
4413 win_T *wp = popup_create(NULL, NULL, info ? TYPE_INFO : TYPE_PREVIEW); |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
4414 |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
4415 if (wp == NULL) |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
4416 return FAIL; |
17767
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
4417 if (info) |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
4418 wp->w_popup_flags |= POPF_INFO; |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
4419 else |
c75da1064e33
patch 8.1.1880: cannot show extra info for completion in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17634
diff
changeset
|
4420 wp->w_p_pvw = TRUE; |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
4421 |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
4422 // Set the width to a reasonable value, so that w_topline can be computed. |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
4423 if (wp->w_minwidth > 0) |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
4424 wp->w_width = wp->w_minwidth; |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
4425 else if (wp->w_maxwidth > 0) |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
4426 wp->w_width = wp->w_maxwidth; |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
4427 else |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
4428 wp->w_width = curwin->w_width; |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
4429 |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
4430 // Will switch to another buffer soon, dummy one can be wiped. |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
4431 wp->w_buffer->b_locked = FALSE; |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
4432 |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
4433 win_enter(wp, FALSE); |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
4434 return OK; |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
4435 } |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
4436 |
17817
e8a7029efa40
patch 8.1.1905: cannot set all properties of the info popup
Bram Moolenaar <Bram@vim.org>
parents:
17815
diff
changeset
|
4437 /* |
e8a7029efa40
patch 8.1.1905: cannot set all properties of the info popup
Bram Moolenaar <Bram@vim.org>
parents:
17815
diff
changeset
|
4438 * Close any preview popup. |
e8a7029efa40
patch 8.1.1905: cannot set all properties of the info popup
Bram Moolenaar <Bram@vim.org>
parents:
17815
diff
changeset
|
4439 */ |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
4440 void |
17817
e8a7029efa40
patch 8.1.1905: cannot set all properties of the info popup
Bram Moolenaar <Bram@vim.org>
parents:
17815
diff
changeset
|
4441 popup_close_preview(void) |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
4442 { |
17817
e8a7029efa40
patch 8.1.1905: cannot set all properties of the info popup
Bram Moolenaar <Bram@vim.org>
parents:
17815
diff
changeset
|
4443 win_T *wp = popup_find_preview_window(); |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
4444 |
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
4445 if (wp != NULL) |
17863
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
4446 popup_close_with_retval(wp, -1); |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
4447 } |
17817
e8a7029efa40
patch 8.1.1905: cannot set all properties of the info popup
Bram Moolenaar <Bram@vim.org>
parents:
17815
diff
changeset
|
4448 |
e8a7029efa40
patch 8.1.1905: cannot set all properties of the info popup
Bram Moolenaar <Bram@vim.org>
parents:
17815
diff
changeset
|
4449 /* |
e8a7029efa40
patch 8.1.1905: cannot set all properties of the info popup
Bram Moolenaar <Bram@vim.org>
parents:
17815
diff
changeset
|
4450 * Hide the info popup. |
e8a7029efa40
patch 8.1.1905: cannot set all properties of the info popup
Bram Moolenaar <Bram@vim.org>
parents:
17815
diff
changeset
|
4451 */ |
e8a7029efa40
patch 8.1.1905: cannot set all properties of the info popup
Bram Moolenaar <Bram@vim.org>
parents:
17815
diff
changeset
|
4452 void |
e8a7029efa40
patch 8.1.1905: cannot set all properties of the info popup
Bram Moolenaar <Bram@vim.org>
parents:
17815
diff
changeset
|
4453 popup_hide_info(void) |
e8a7029efa40
patch 8.1.1905: cannot set all properties of the info popup
Bram Moolenaar <Bram@vim.org>
parents:
17815
diff
changeset
|
4454 { |
e8a7029efa40
patch 8.1.1905: cannot set all properties of the info popup
Bram Moolenaar <Bram@vim.org>
parents:
17815
diff
changeset
|
4455 win_T *wp = popup_find_info_window(); |
e8a7029efa40
patch 8.1.1905: cannot set all properties of the info popup
Bram Moolenaar <Bram@vim.org>
parents:
17815
diff
changeset
|
4456 |
e8a7029efa40
patch 8.1.1905: cannot set all properties of the info popup
Bram Moolenaar <Bram@vim.org>
parents:
17815
diff
changeset
|
4457 if (wp != NULL) |
e8a7029efa40
patch 8.1.1905: cannot set all properties of the info popup
Bram Moolenaar <Bram@vim.org>
parents:
17815
diff
changeset
|
4458 popup_hide(wp); |
e8a7029efa40
patch 8.1.1905: cannot set all properties of the info popup
Bram Moolenaar <Bram@vim.org>
parents:
17815
diff
changeset
|
4459 } |
21373
3d73cdd173ab
patch 8.2.1237: changing 'completepopup' after opening popup has no effect
Bram Moolenaar <Bram@vim.org>
parents:
21341
diff
changeset
|
4460 |
3d73cdd173ab
patch 8.2.1237: changing 'completepopup' after opening popup has no effect
Bram Moolenaar <Bram@vim.org>
parents:
21341
diff
changeset
|
4461 /* |
3d73cdd173ab
patch 8.2.1237: changing 'completepopup' after opening popup has no effect
Bram Moolenaar <Bram@vim.org>
parents:
21341
diff
changeset
|
4462 * Close any info popup. |
3d73cdd173ab
patch 8.2.1237: changing 'completepopup' after opening popup has no effect
Bram Moolenaar <Bram@vim.org>
parents:
21341
diff
changeset
|
4463 */ |
3d73cdd173ab
patch 8.2.1237: changing 'completepopup' after opening popup has no effect
Bram Moolenaar <Bram@vim.org>
parents:
21341
diff
changeset
|
4464 void |
3d73cdd173ab
patch 8.2.1237: changing 'completepopup' after opening popup has no effect
Bram Moolenaar <Bram@vim.org>
parents:
21341
diff
changeset
|
4465 popup_close_info(void) |
3d73cdd173ab
patch 8.2.1237: changing 'completepopup' after opening popup has no effect
Bram Moolenaar <Bram@vim.org>
parents:
21341
diff
changeset
|
4466 { |
3d73cdd173ab
patch 8.2.1237: changing 'completepopup' after opening popup has no effect
Bram Moolenaar <Bram@vim.org>
parents:
21341
diff
changeset
|
4467 win_T *wp = popup_find_info_window(); |
3d73cdd173ab
patch 8.2.1237: changing 'completepopup' after opening popup has no effect
Bram Moolenaar <Bram@vim.org>
parents:
21341
diff
changeset
|
4468 |
3d73cdd173ab
patch 8.2.1237: changing 'completepopup' after opening popup has no effect
Bram Moolenaar <Bram@vim.org>
parents:
21341
diff
changeset
|
4469 if (wp != NULL) |
3d73cdd173ab
patch 8.2.1237: changing 'completepopup' after opening popup has no effect
Bram Moolenaar <Bram@vim.org>
parents:
21341
diff
changeset
|
4470 popup_close_with_retval(wp, -1); |
3d73cdd173ab
patch 8.2.1237: changing 'completepopup' after opening popup has no effect
Bram Moolenaar <Bram@vim.org>
parents:
21341
diff
changeset
|
4471 } |
17791
55c167b08c2b
patch 8.1.1892: missing index entry and option menu for 'completepopup'
Bram Moolenaar <Bram@vim.org>
parents:
17789
diff
changeset
|
4472 #endif |
17431
ce35cdbe9f74
patch 8.1.1714: cannot preview a file in a popup window
Bram Moolenaar <Bram@vim.org>
parents:
17429
diff
changeset
|
4473 |
29900
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4474 #if defined(HAS_MESSAGE_WINDOW) || defined(PROTO) |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4475 |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4476 /* |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4477 * Get the message window. |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4478 * Returns NULL if something failed. |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4479 */ |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4480 win_T * |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4481 popup_get_message_win(void) |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4482 { |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4483 if (message_win == NULL) |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4484 { |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4485 int i; |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4486 |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4487 message_win = popup_create(NULL, NULL, TYPE_MESSAGE_WIN); |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4488 |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4489 if (message_win == NULL) |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4490 return NULL; |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4491 |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4492 // use the full screen width |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4493 message_win->w_width = Columns; |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4494 |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4495 // position at bottom of screen |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4496 message_win->w_popup_pos = POPPOS_BOTTOM; |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4497 message_win->w_wantcol = 1; |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4498 message_win->w_minwidth = 9999; |
30027
7e787f94852b
patch 9.0.0351: message window may obscure the command line
Bram Moolenaar <Bram@vim.org>
parents:
30025
diff
changeset
|
4499 message_win->w_firstline = -1; |
29900
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4500 |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4501 // no padding, border at the top |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4502 for (i = 0; i < 4; ++i) |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4503 message_win->w_popup_padding[i] = 0; |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4504 for (i = 1; i < 4; ++i) |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4505 message_win->w_popup_border[i] = 0; |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4506 |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4507 if (message_win->w_popup_timer != NULL) |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4508 message_win->w_popup_timer->tr_keep = TRUE; |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4509 } |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4510 return message_win; |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4511 } |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4512 |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4513 /* |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4514 * If the message window is not visible: show it |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4515 * If the message window is visible: reset the timeout |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4516 */ |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4517 void |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4518 popup_show_message_win(void) |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4519 { |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4520 if (message_win != NULL) |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4521 { |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4522 if ((message_win->w_popup_flags & POPF_HIDDEN) != 0) |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4523 { |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4524 // the highlight may have changed. |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4525 popup_update_color(message_win, TYPE_MESSAGE_WIN); |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4526 popup_show(message_win); |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4527 } |
30222
b871016ea7c1
patch 9.0.0447: using :echowin while at the hit-enter prompt causes problems
Bram Moolenaar <Bram@vim.org>
parents:
30220
diff
changeset
|
4528 start_message_win_timer = TRUE; |
b871016ea7c1
patch 9.0.0447: using :echowin while at the hit-enter prompt causes problems
Bram Moolenaar <Bram@vim.org>
parents:
30220
diff
changeset
|
4529 } |
b871016ea7c1
patch 9.0.0447: using :echowin while at the hit-enter prompt causes problems
Bram Moolenaar <Bram@vim.org>
parents:
30220
diff
changeset
|
4530 } |
b871016ea7c1
patch 9.0.0447: using :echowin while at the hit-enter prompt causes problems
Bram Moolenaar <Bram@vim.org>
parents:
30220
diff
changeset
|
4531 |
b871016ea7c1
patch 9.0.0447: using :echowin while at the hit-enter prompt causes problems
Bram Moolenaar <Bram@vim.org>
parents:
30220
diff
changeset
|
4532 static void |
b871016ea7c1
patch 9.0.0447: using :echowin while at the hit-enter prompt causes problems
Bram Moolenaar <Bram@vim.org>
parents:
30220
diff
changeset
|
4533 may_start_message_win_timer(win_T *wp) |
b871016ea7c1
patch 9.0.0447: using :echowin while at the hit-enter prompt causes problems
Bram Moolenaar <Bram@vim.org>
parents:
30220
diff
changeset
|
4534 { |
b871016ea7c1
patch 9.0.0447: using :echowin while at the hit-enter prompt causes problems
Bram Moolenaar <Bram@vim.org>
parents:
30220
diff
changeset
|
4535 if (wp == message_win && start_message_win_timer) |
b871016ea7c1
patch 9.0.0447: using :echowin while at the hit-enter prompt causes problems
Bram Moolenaar <Bram@vim.org>
parents:
30220
diff
changeset
|
4536 { |
29916
cf55d7e10bb1
patch 9.0.0296: message in popup is shortened unnecessary
Bram Moolenaar <Bram@vim.org>
parents:
29912
diff
changeset
|
4537 if (message_win->w_popup_timer != NULL) |
29900
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4538 timer_start(message_win->w_popup_timer); |
30222
b871016ea7c1
patch 9.0.0447: using :echowin while at the hit-enter prompt causes problems
Bram Moolenaar <Bram@vim.org>
parents:
30220
diff
changeset
|
4539 start_message_win_timer = FALSE; |
29900
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4540 } |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4541 } |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4542 |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4543 int |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4544 popup_message_win_visible(void) |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4545 { |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4546 return message_win != NULL |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4547 && (message_win->w_popup_flags & POPF_HIDDEN) == 0; |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4548 } |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4549 |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4550 /* |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4551 * If the message window is visible: hide it. |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4552 */ |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4553 void |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4554 popup_hide_message_win(void) |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4555 { |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4556 if (message_win != NULL) |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4557 popup_hide(message_win); |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4558 } |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4559 |
30025
d269dd3cd31d
patch 9.0.0350: :echowindow does not work in a compiled function
Bram Moolenaar <Bram@vim.org>
parents:
30005
diff
changeset
|
4560 /* |
d269dd3cd31d
patch 9.0.0350: :echowindow does not work in a compiled function
Bram Moolenaar <Bram@vim.org>
parents:
30005
diff
changeset
|
4561 * Invoked before outputting a message for ":echowindow". |
d269dd3cd31d
patch 9.0.0350: :echowindow does not work in a compiled function
Bram Moolenaar <Bram@vim.org>
parents:
30005
diff
changeset
|
4562 */ |
d269dd3cd31d
patch 9.0.0350: :echowindow does not work in a compiled function
Bram Moolenaar <Bram@vim.org>
parents:
30005
diff
changeset
|
4563 void |
d269dd3cd31d
patch 9.0.0350: :echowindow does not work in a compiled function
Bram Moolenaar <Bram@vim.org>
parents:
30005
diff
changeset
|
4564 start_echowindow(void) |
d269dd3cd31d
patch 9.0.0350: :echowindow does not work in a compiled function
Bram Moolenaar <Bram@vim.org>
parents:
30005
diff
changeset
|
4565 { |
d269dd3cd31d
patch 9.0.0350: :echowindow does not work in a compiled function
Bram Moolenaar <Bram@vim.org>
parents:
30005
diff
changeset
|
4566 in_echowindow = TRUE; |
d269dd3cd31d
patch 9.0.0350: :echowindow does not work in a compiled function
Bram Moolenaar <Bram@vim.org>
parents:
30005
diff
changeset
|
4567 } |
d269dd3cd31d
patch 9.0.0350: :echowindow does not work in a compiled function
Bram Moolenaar <Bram@vim.org>
parents:
30005
diff
changeset
|
4568 |
d269dd3cd31d
patch 9.0.0350: :echowindow does not work in a compiled function
Bram Moolenaar <Bram@vim.org>
parents:
30005
diff
changeset
|
4569 /* |
d269dd3cd31d
patch 9.0.0350: :echowindow does not work in a compiled function
Bram Moolenaar <Bram@vim.org>
parents:
30005
diff
changeset
|
4570 * Invoked after outputting a message for ":echowindow". |
d269dd3cd31d
patch 9.0.0350: :echowindow does not work in a compiled function
Bram Moolenaar <Bram@vim.org>
parents:
30005
diff
changeset
|
4571 */ |
d269dd3cd31d
patch 9.0.0350: :echowindow does not work in a compiled function
Bram Moolenaar <Bram@vim.org>
parents:
30005
diff
changeset
|
4572 void |
d269dd3cd31d
patch 9.0.0350: :echowindow does not work in a compiled function
Bram Moolenaar <Bram@vim.org>
parents:
30005
diff
changeset
|
4573 end_echowindow(void) |
d269dd3cd31d
patch 9.0.0350: :echowindow does not work in a compiled function
Bram Moolenaar <Bram@vim.org>
parents:
30005
diff
changeset
|
4574 { |
30190
c4af016733fe
patch 9.0.0431: current mode shows in message window
Bram Moolenaar <Bram@vim.org>
parents:
30043
diff
changeset
|
4575 in_echowindow = FALSE; |
c4af016733fe
patch 9.0.0431: current mode shows in message window
Bram Moolenaar <Bram@vim.org>
parents:
30043
diff
changeset
|
4576 |
30222
b871016ea7c1
patch 9.0.0447: using :echowin while at the hit-enter prompt causes problems
Bram Moolenaar <Bram@vim.org>
parents:
30220
diff
changeset
|
4577 if ((State & MODE_HITRETURN) == 0) |
b871016ea7c1
patch 9.0.0447: using :echowin while at the hit-enter prompt causes problems
Bram Moolenaar <Bram@vim.org>
parents:
30220
diff
changeset
|
4578 // show the message window now |
b871016ea7c1
patch 9.0.0447: using :echowin while at the hit-enter prompt causes problems
Bram Moolenaar <Bram@vim.org>
parents:
30220
diff
changeset
|
4579 redraw_cmd(FALSE); |
30025
d269dd3cd31d
patch 9.0.0350: :echowindow does not work in a compiled function
Bram Moolenaar <Bram@vim.org>
parents:
30005
diff
changeset
|
4580 |
d269dd3cd31d
patch 9.0.0350: :echowindow does not work in a compiled function
Bram Moolenaar <Bram@vim.org>
parents:
30005
diff
changeset
|
4581 // do not overwrite messages |
d269dd3cd31d
patch 9.0.0350: :echowindow does not work in a compiled function
Bram Moolenaar <Bram@vim.org>
parents:
30005
diff
changeset
|
4582 // TODO: only for message window |
d269dd3cd31d
patch 9.0.0350: :echowindow does not work in a compiled function
Bram Moolenaar <Bram@vim.org>
parents:
30005
diff
changeset
|
4583 msg_didout = TRUE; |
d269dd3cd31d
patch 9.0.0350: :echowindow does not work in a compiled function
Bram Moolenaar <Bram@vim.org>
parents:
30005
diff
changeset
|
4584 if (msg_col == 0) |
d269dd3cd31d
patch 9.0.0350: :echowindow does not work in a compiled function
Bram Moolenaar <Bram@vim.org>
parents:
30005
diff
changeset
|
4585 msg_col = 1; |
d269dd3cd31d
patch 9.0.0350: :echowindow does not work in a compiled function
Bram Moolenaar <Bram@vim.org>
parents:
30005
diff
changeset
|
4586 } |
29900
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4587 #endif |
a6721cafbc74
patch 9.0.0288: when 'cmdheight' is zero some messages are not displayed
Bram Moolenaar <Bram@vim.org>
parents:
29732
diff
changeset
|
4588 |
17584
65a8099fc0e8
patch 8.1.1789: cannot see file name of preview popup window
Bram Moolenaar <Bram@vim.org>
parents:
17580
diff
changeset
|
4589 /* |
17863
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
4590 * Close any popup for a text property associated with "win". |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
4591 * Return TRUE if a popup was closed. |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
4592 */ |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
4593 int |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
4594 popup_win_closed(win_T *win) |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
4595 { |
17879
5d5b460926ca
patch 8.1.1936: not enough tests for text property popup window
Bram Moolenaar <Bram@vim.org>
parents:
17875
diff
changeset
|
4596 int round; |
5d5b460926ca
patch 8.1.1936: not enough tests for text property popup window
Bram Moolenaar <Bram@vim.org>
parents:
17875
diff
changeset
|
4597 win_T *wp; |
5d5b460926ca
patch 8.1.1936: not enough tests for text property popup window
Bram Moolenaar <Bram@vim.org>
parents:
17875
diff
changeset
|
4598 win_T *next; |
5d5b460926ca
patch 8.1.1936: not enough tests for text property popup window
Bram Moolenaar <Bram@vim.org>
parents:
17875
diff
changeset
|
4599 int ret = FALSE; |
5d5b460926ca
patch 8.1.1936: not enough tests for text property popup window
Bram Moolenaar <Bram@vim.org>
parents:
17875
diff
changeset
|
4600 |
5d5b460926ca
patch 8.1.1936: not enough tests for text property popup window
Bram Moolenaar <Bram@vim.org>
parents:
17875
diff
changeset
|
4601 for (round = 1; round <= 2; ++round) |
5d5b460926ca
patch 8.1.1936: not enough tests for text property popup window
Bram Moolenaar <Bram@vim.org>
parents:
17875
diff
changeset
|
4602 for (wp = round == 1 ? first_popupwin : curtab->tp_first_popupwin; |
5d5b460926ca
patch 8.1.1936: not enough tests for text property popup window
Bram Moolenaar <Bram@vim.org>
parents:
17875
diff
changeset
|
4603 wp != NULL; wp = next) |
17863
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
4604 { |
17879
5d5b460926ca
patch 8.1.1936: not enough tests for text property popup window
Bram Moolenaar <Bram@vim.org>
parents:
17875
diff
changeset
|
4605 next = wp->w_next; |
5d5b460926ca
patch 8.1.1936: not enough tests for text property popup window
Bram Moolenaar <Bram@vim.org>
parents:
17875
diff
changeset
|
4606 if (wp->w_popup_prop_win == win) |
5d5b460926ca
patch 8.1.1936: not enough tests for text property popup window
Bram Moolenaar <Bram@vim.org>
parents:
17875
diff
changeset
|
4607 { |
5d5b460926ca
patch 8.1.1936: not enough tests for text property popup window
Bram Moolenaar <Bram@vim.org>
parents:
17875
diff
changeset
|
4608 popup_close_with_retval(wp, -1); |
5d5b460926ca
patch 8.1.1936: not enough tests for text property popup window
Bram Moolenaar <Bram@vim.org>
parents:
17875
diff
changeset
|
4609 ret = TRUE; |
5d5b460926ca
patch 8.1.1936: not enough tests for text property popup window
Bram Moolenaar <Bram@vim.org>
parents:
17875
diff
changeset
|
4610 } |
17863
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
4611 } |
17879
5d5b460926ca
patch 8.1.1936: not enough tests for text property popup window
Bram Moolenaar <Bram@vim.org>
parents:
17875
diff
changeset
|
4612 return ret; |
17863
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
4613 } |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
4614 |
08f1dd29550e
patch 8.1.1928: popup windows don't move with the text when making changes
Bram Moolenaar <Bram@vim.org>
parents:
17847
diff
changeset
|
4615 /* |
17584
65a8099fc0e8
patch 8.1.1789: cannot see file name of preview popup window
Bram Moolenaar <Bram@vim.org>
parents:
17580
diff
changeset
|
4616 * Set the title of the popup window to the file name. |
65a8099fc0e8
patch 8.1.1789: cannot see file name of preview popup window
Bram Moolenaar <Bram@vim.org>
parents:
17580
diff
changeset
|
4617 */ |
65a8099fc0e8
patch 8.1.1789: cannot see file name of preview popup window
Bram Moolenaar <Bram@vim.org>
parents:
17580
diff
changeset
|
4618 void |
65a8099fc0e8
patch 8.1.1789: cannot see file name of preview popup window
Bram Moolenaar <Bram@vim.org>
parents:
17580
diff
changeset
|
4619 popup_set_title(win_T *wp) |
65a8099fc0e8
patch 8.1.1789: cannot see file name of preview popup window
Bram Moolenaar <Bram@vim.org>
parents:
17580
diff
changeset
|
4620 { |
65a8099fc0e8
patch 8.1.1789: cannot see file name of preview popup window
Bram Moolenaar <Bram@vim.org>
parents:
17580
diff
changeset
|
4621 if (wp->w_buffer->b_fname != NULL) |
65a8099fc0e8
patch 8.1.1789: cannot see file name of preview popup window
Bram Moolenaar <Bram@vim.org>
parents:
17580
diff
changeset
|
4622 { |
65a8099fc0e8
patch 8.1.1789: cannot see file name of preview popup window
Bram Moolenaar <Bram@vim.org>
parents:
17580
diff
changeset
|
4623 char_u dirname[MAXPATHL]; |
65a8099fc0e8
patch 8.1.1789: cannot see file name of preview popup window
Bram Moolenaar <Bram@vim.org>
parents:
17580
diff
changeset
|
4624 size_t len; |
65a8099fc0e8
patch 8.1.1789: cannot see file name of preview popup window
Bram Moolenaar <Bram@vim.org>
parents:
17580
diff
changeset
|
4625 |
65a8099fc0e8
patch 8.1.1789: cannot see file name of preview popup window
Bram Moolenaar <Bram@vim.org>
parents:
17580
diff
changeset
|
4626 mch_dirname(dirname, MAXPATHL); |
65a8099fc0e8
patch 8.1.1789: cannot see file name of preview popup window
Bram Moolenaar <Bram@vim.org>
parents:
17580
diff
changeset
|
4627 shorten_buf_fname(wp->w_buffer, dirname, FALSE); |
65a8099fc0e8
patch 8.1.1789: cannot see file name of preview popup window
Bram Moolenaar <Bram@vim.org>
parents:
17580
diff
changeset
|
4628 |
65a8099fc0e8
patch 8.1.1789: cannot see file name of preview popup window
Bram Moolenaar <Bram@vim.org>
parents:
17580
diff
changeset
|
4629 vim_free(wp->w_popup_title); |
65a8099fc0e8
patch 8.1.1789: cannot see file name of preview popup window
Bram Moolenaar <Bram@vim.org>
parents:
17580
diff
changeset
|
4630 len = STRLEN(wp->w_buffer->b_fname) + 3; |
65a8099fc0e8
patch 8.1.1789: cannot see file name of preview popup window
Bram Moolenaar <Bram@vim.org>
parents:
17580
diff
changeset
|
4631 wp->w_popup_title = alloc((int)len); |
65a8099fc0e8
patch 8.1.1789: cannot see file name of preview popup window
Bram Moolenaar <Bram@vim.org>
parents:
17580
diff
changeset
|
4632 if (wp->w_popup_title != NULL) |
65a8099fc0e8
patch 8.1.1789: cannot see file name of preview popup window
Bram Moolenaar <Bram@vim.org>
parents:
17580
diff
changeset
|
4633 vim_snprintf((char *)wp->w_popup_title, len, " %s ", |
65a8099fc0e8
patch 8.1.1789: cannot see file name of preview popup window
Bram Moolenaar <Bram@vim.org>
parents:
17580
diff
changeset
|
4634 wp->w_buffer->b_fname); |
29732
89e1d67814a9
patch 9.0.0206: redraw flags are not named specifically
Bram Moolenaar <Bram@vim.org>
parents:
29660
diff
changeset
|
4635 redraw_win_later(wp, UPD_VALID); |
17584
65a8099fc0e8
patch 8.1.1789: cannot see file name of preview popup window
Bram Moolenaar <Bram@vim.org>
parents:
17580
diff
changeset
|
4636 } |
65a8099fc0e8
patch 8.1.1789: cannot see file name of preview popup window
Bram Moolenaar <Bram@vim.org>
parents:
17580
diff
changeset
|
4637 } |
65a8099fc0e8
patch 8.1.1789: cannot see file name of preview popup window
Bram Moolenaar <Bram@vim.org>
parents:
17580
diff
changeset
|
4638 |
18767
068337e86133
patch 8.1.2373: cannot build with +popupwin but without +quickfix
Bram Moolenaar <Bram@vim.org>
parents:
18763
diff
changeset
|
4639 # if defined(FEAT_QUICKFIX) || defined(PROTO) |
17584
65a8099fc0e8
patch 8.1.1789: cannot see file name of preview popup window
Bram Moolenaar <Bram@vim.org>
parents:
17580
diff
changeset
|
4640 /* |
65a8099fc0e8
patch 8.1.1789: cannot see file name of preview popup window
Bram Moolenaar <Bram@vim.org>
parents:
17580
diff
changeset
|
4641 * If there is a preview window, update the title. |
65a8099fc0e8
patch 8.1.1789: cannot see file name of preview popup window
Bram Moolenaar <Bram@vim.org>
parents:
17580
diff
changeset
|
4642 * Used after changing directory. |
65a8099fc0e8
patch 8.1.1789: cannot see file name of preview popup window
Bram Moolenaar <Bram@vim.org>
parents:
17580
diff
changeset
|
4643 */ |
65a8099fc0e8
patch 8.1.1789: cannot see file name of preview popup window
Bram Moolenaar <Bram@vim.org>
parents:
17580
diff
changeset
|
4644 void |
65a8099fc0e8
patch 8.1.1789: cannot see file name of preview popup window
Bram Moolenaar <Bram@vim.org>
parents:
17580
diff
changeset
|
4645 popup_update_preview_title(void) |
65a8099fc0e8
patch 8.1.1789: cannot see file name of preview popup window
Bram Moolenaar <Bram@vim.org>
parents:
17580
diff
changeset
|
4646 { |
65a8099fc0e8
patch 8.1.1789: cannot see file name of preview popup window
Bram Moolenaar <Bram@vim.org>
parents:
17580
diff
changeset
|
4647 win_T *wp = popup_find_preview_window(); |
65a8099fc0e8
patch 8.1.1789: cannot see file name of preview popup window
Bram Moolenaar <Bram@vim.org>
parents:
17580
diff
changeset
|
4648 |
65a8099fc0e8
patch 8.1.1789: cannot see file name of preview popup window
Bram Moolenaar <Bram@vim.org>
parents:
17580
diff
changeset
|
4649 if (wp != NULL) |
65a8099fc0e8
patch 8.1.1789: cannot see file name of preview popup window
Bram Moolenaar <Bram@vim.org>
parents:
17580
diff
changeset
|
4650 popup_set_title(wp); |
65a8099fc0e8
patch 8.1.1789: cannot see file name of preview popup window
Bram Moolenaar <Bram@vim.org>
parents:
17580
diff
changeset
|
4651 } |
18767
068337e86133
patch 8.1.2373: cannot build with +popupwin but without +quickfix
Bram Moolenaar <Bram@vim.org>
parents:
18763
diff
changeset
|
4652 # endif |
17584
65a8099fc0e8
patch 8.1.1789: cannot see file name of preview popup window
Bram Moolenaar <Bram@vim.org>
parents:
17580
diff
changeset
|
4653 |
18763
49b78d6465e5
patch 8.1.2371: FEAT_TEXT_PROP is a confusing name
Bram Moolenaar <Bram@vim.org>
parents:
18744
diff
changeset
|
4654 #endif // FEAT_PROP_POPUP |