diff options
Diffstat (limited to '')
-rw-r--r-- | scripts/kconfig/libcurses/window.c | 639 |
1 files changed, 639 insertions, 0 deletions
diff --git a/scripts/kconfig/libcurses/window.c b/scripts/kconfig/libcurses/window.c new file mode 100644 index 000000000..891d0c05b --- /dev/null +++ b/scripts/kconfig/libcurses/window.c | |||
@@ -0,0 +1,639 @@ | |||
1 | /* PDCurses */ | ||
2 | |||
3 | #include "curspriv.h" | ||
4 | |||
5 | /*man-start************************************************************** | ||
6 | |||
7 | window | ||
8 | ------ | ||
9 | |||
10 | ### Synopsis | ||
11 | |||
12 | WINDOW *newwin(int nlines, int ncols, int begy, int begx); | ||
13 | WINDOW *derwin(WINDOW* orig, int nlines, int ncols, | ||
14 | int begy, int begx); | ||
15 | WINDOW *subwin(WINDOW* orig, int nlines, int ncols, | ||
16 | int begy, int begx); | ||
17 | WINDOW *dupwin(WINDOW *win); | ||
18 | WINDOW *wgetparent(const WINDOW *win); | ||
19 | int delwin(WINDOW *win); | ||
20 | int mvwin(WINDOW *win, int y, int x); | ||
21 | int mvderwin(WINDOW *win, int pary, int parx); | ||
22 | int syncok(WINDOW *win, bool bf); | ||
23 | bool is_subwin(const WINDOW *win); | ||
24 | bool is_syncok(const WINDOW *win); | ||
25 | void wsyncup(WINDOW *win); | ||
26 | void wcursyncup(WINDOW *win); | ||
27 | void wsyncdown(WINDOW *win); | ||
28 | |||
29 | WINDOW *resize_window(WINDOW *win, int nlines, int ncols); | ||
30 | int wresize(WINDOW *win, int nlines, int ncols); | ||
31 | WINDOW *PDC_makelines(WINDOW *win); | ||
32 | WINDOW *PDC_makenew(int nlines, int ncols, int begy, int begx); | ||
33 | void PDC_sync(WINDOW *win); | ||
34 | |||
35 | ### Description | ||
36 | |||
37 | newwin() creates a new window with the given number of lines, nlines | ||
38 | and columns, ncols. The upper left corner of the window is at line | ||
39 | begy, column begx. If nlines is zero, it defaults to LINES - begy; | ||
40 | ncols to COLS - begx. Create a new full-screen window by calling | ||
41 | newwin(0, 0, 0, 0). | ||
42 | |||
43 | delwin() deletes the named window, freeing all associated memory. In | ||
44 | the case of overlapping windows, subwindows should be deleted before | ||
45 | the main window. | ||
46 | |||
47 | mvwin() moves the window so that the upper left-hand corner is at | ||
48 | position (y,x). If the move would cause the window to be off the | ||
49 | screen, it is an error and the window is not moved. Moving subwindows | ||
50 | is allowed. | ||
51 | |||
52 | subwin() creates a new subwindow within a window. The dimensions of | ||
53 | the subwindow are nlines lines and ncols columns. The subwindow is at | ||
54 | position (begy, begx) on the screen. This position is relative to the | ||
55 | screen, and not to the window orig. Changes made to either window | ||
56 | will affect both. When using this routine, you will often need to | ||
57 | call touchwin() before calling wrefresh(). | ||
58 | |||
59 | derwin() is the same as subwin(), except that begy and begx are | ||
60 | relative to the origin of the window orig rather than the screen. | ||
61 | There is no difference between subwindows and derived windows. | ||
62 | |||
63 | mvderwin() moves a derived window (or subwindow) inside its parent | ||
64 | window. The screen-relative parameters of the window are not changed. | ||
65 | This routine is used to display different parts of the parent window | ||
66 | at the same physical position on the screen. | ||
67 | |||
68 | dupwin() creates an exact duplicate of the window win. | ||
69 | |||
70 | wgetparent() returns the parent WINDOW pointer for subwindows, or NULL | ||
71 | for windows having no parent. | ||
72 | |||
73 | wsyncup() causes a touchwin() of all of the window's parents. | ||
74 | |||
75 | If syncok() is called with a second argument of TRUE, this causes a | ||
76 | wsyncup() to be called every time the window is changed. | ||
77 | |||
78 | is_subwin() reports whether the specified window is a subwindow, | ||
79 | created by subwin() or derwin(). | ||
80 | |||
81 | is_syncok() reports whether the specified window is in syncok mode. | ||
82 | |||
83 | wcursyncup() causes the current cursor position of all of a window's | ||
84 | ancestors to reflect the current cursor position of the current | ||
85 | window. | ||
86 | |||
87 | wsyncdown() causes a touchwin() of the current window if any of its | ||
88 | parent's windows have been touched. | ||
89 | |||
90 | resize_window() allows the user to resize an existing window. It | ||
91 | returns the pointer to the new window, or NULL on failure. | ||
92 | |||
93 | wresize() is an ncurses-compatible wrapper for resize_window(). Note | ||
94 | that, unlike ncurses, it will NOT process any subwindows of the | ||
95 | window. (However, you still can call it _on_ subwindows.) It returns | ||
96 | OK or ERR. | ||
97 | |||
98 | PDC_makenew() allocates all data for a new WINDOW * except the actual | ||
99 | lines themselves. If it's unable to allocate memory for the window | ||
100 | structure, it will free all allocated memory and return a NULL | ||
101 | pointer. | ||
102 | |||
103 | PDC_makelines() allocates the memory for the lines. | ||
104 | |||
105 | PDC_sync() handles wrefresh() and wsyncup() calls when a window is | ||
106 | changed. | ||
107 | |||
108 | ### Return Value | ||
109 | |||
110 | newwin(), subwin(), derwin() and dupwin() return a pointer to the new | ||
111 | window, or NULL on failure. delwin(), mvwin(), mvderwin() and | ||
112 | syncok() return OK or ERR. wsyncup(), wcursyncup() and wsyncdown() | ||
113 | return nothing. | ||
114 | |||
115 | is_subwin() and is_syncok() returns TRUE or FALSE. | ||
116 | |||
117 | ### Errors | ||
118 | |||
119 | It is an error to call resize_window() before calling initscr(). | ||
120 | Also, an error will be generated if we fail to create a newly sized | ||
121 | replacement window for curscr, or stdscr. This could happen when | ||
122 | increasing the window size. NOTE: If this happens, the previously | ||
123 | successfully allocated windows are left alone; i.e., the resize is | ||
124 | NOT cancelled for those windows. | ||
125 | |||
126 | ### Portability | ||
127 | |||
128 | Function | X/Open | ncurses | NetBSD | ||
129 | :---------------------|:------:|:-------:|:------: | ||
130 | newwin | Y | Y | Y | ||
131 | delwin | Y | Y | Y | ||
132 | mvwin | Y | Y | Y | ||
133 | subwin | Y | Y | Y | ||
134 | derwin | Y | Y | Y | ||
135 | mvderwin | Y | Y | Y | ||
136 | dupwin | Y | Y | Y | ||
137 | wgetparent | - | Y | - | ||
138 | wsyncup | Y | Y | Y | ||
139 | syncok | Y | Y | Y | ||
140 | is_subwin | - | Y | - | ||
141 | is_syncok | - | Y | - | ||
142 | wcursyncup | Y | Y | Y | ||
143 | wsyncdown | Y | Y | Y | ||
144 | wresize | - | Y | Y | ||
145 | resize_window | - | - | - | ||
146 | PDC_makelines | - | - | - | ||
147 | PDC_makenew | - | - | - | ||
148 | PDC_sync | - | - | - | ||
149 | |||
150 | **man-end****************************************************************/ | ||
151 | |||
152 | #include <stdlib.h> | ||
153 | |||
154 | WINDOW *PDC_makenew(int nlines, int ncols, int begy, int begx) | ||
155 | { | ||
156 | WINDOW *win; | ||
157 | |||
158 | PDC_LOG(("PDC_makenew() - called: lines %d cols %d begy %d begx %d\n", | ||
159 | nlines, ncols, begy, begx)); | ||
160 | |||
161 | /* allocate the window structure itself */ | ||
162 | |||
163 | win = calloc(1, sizeof(WINDOW)); | ||
164 | if (!win) | ||
165 | return win; | ||
166 | |||
167 | /* allocate the line pointer array */ | ||
168 | |||
169 | win->_y = malloc(nlines * sizeof(chtype *)); | ||
170 | if (!win->_y) | ||
171 | { | ||
172 | free(win); | ||
173 | return (WINDOW *)NULL; | ||
174 | } | ||
175 | |||
176 | /* allocate the minchng and maxchng arrays */ | ||
177 | |||
178 | win->_firstch = malloc(nlines * sizeof(int)); | ||
179 | if (!win->_firstch) | ||
180 | { | ||
181 | free(win->_y); | ||
182 | free(win); | ||
183 | return (WINDOW *)NULL; | ||
184 | } | ||
185 | |||
186 | win->_lastch = malloc(nlines * sizeof(int)); | ||
187 | if (!win->_lastch) | ||
188 | { | ||
189 | free(win->_firstch); | ||
190 | free(win->_y); | ||
191 | free(win); | ||
192 | return (WINDOW *)NULL; | ||
193 | } | ||
194 | |||
195 | /* initialize window variables */ | ||
196 | |||
197 | win->_maxy = nlines; /* real max screen size */ | ||
198 | win->_maxx = ncols; /* real max screen size */ | ||
199 | win->_begy = begy; | ||
200 | win->_begx = begx; | ||
201 | win->_bkgd = ' '; /* wrs 4/10/93 -- initialize background to blank */ | ||
202 | win->_clear = (bool) ((nlines == LINES) && (ncols == COLS)); | ||
203 | win->_bmarg = nlines - 1; | ||
204 | win->_parx = win->_pary = -1; | ||
205 | |||
206 | /* initialize pad variables*/ | ||
207 | |||
208 | win->_pad._pad_y = -1; | ||
209 | win->_pad._pad_x = -1; | ||
210 | win->_pad._pad_top = -1; | ||
211 | win->_pad._pad_left = -1; | ||
212 | win->_pad._pad_bottom = -1; | ||
213 | win->_pad._pad_right = -1; | ||
214 | |||
215 | /* init to say window all changed */ | ||
216 | |||
217 | touchwin(win); | ||
218 | |||
219 | return win; | ||
220 | } | ||
221 | |||
222 | WINDOW *PDC_makelines(WINDOW *win) | ||
223 | { | ||
224 | int i, j, nlines, ncols; | ||
225 | |||
226 | PDC_LOG(("PDC_makelines() - called\n")); | ||
227 | |||
228 | if (!win) | ||
229 | return (WINDOW *)NULL; | ||
230 | |||
231 | nlines = win->_maxy; | ||
232 | ncols = win->_maxx; | ||
233 | |||
234 | for (i = 0; i < nlines; i++) | ||
235 | { | ||
236 | win->_y[i] = malloc(ncols * sizeof(chtype)); | ||
237 | if (!win->_y[i]) | ||
238 | { | ||
239 | /* if error, free all the data */ | ||
240 | |||
241 | for (j = 0; j < i; j++) | ||
242 | free(win->_y[j]); | ||
243 | |||
244 | free(win->_firstch); | ||
245 | free(win->_lastch); | ||
246 | free(win->_y); | ||
247 | free(win); | ||
248 | |||
249 | return (WINDOW *)NULL; | ||
250 | } | ||
251 | } | ||
252 | |||
253 | return win; | ||
254 | } | ||
255 | |||
256 | void PDC_sync(WINDOW *win) | ||
257 | { | ||
258 | PDC_LOG(("PDC_sync() - called:\n")); | ||
259 | |||
260 | if (win->_immed) | ||
261 | wrefresh(win); | ||
262 | if (win->_sync) | ||
263 | wsyncup(win); | ||
264 | } | ||
265 | |||
266 | WINDOW *newwin(int nlines, int ncols, int begy, int begx) | ||
267 | { | ||
268 | WINDOW *win; | ||
269 | |||
270 | PDC_LOG(("newwin() - called:lines=%d cols=%d begy=%d begx=%d\n", | ||
271 | nlines, ncols, begy, begx)); | ||
272 | |||
273 | if (!nlines) | ||
274 | nlines = LINES - begy; | ||
275 | if (!ncols) | ||
276 | ncols = COLS - begx; | ||
277 | |||
278 | if (!SP || begy + nlines > SP->lines || begx + ncols > SP->cols) | ||
279 | return (WINDOW *)NULL; | ||
280 | |||
281 | win = PDC_makenew(nlines, ncols, begy, begx); | ||
282 | if (win) | ||
283 | win = PDC_makelines(win); | ||
284 | |||
285 | if (win) | ||
286 | werase(win); | ||
287 | |||
288 | return win; | ||
289 | } | ||
290 | |||
291 | int delwin(WINDOW *win) | ||
292 | { | ||
293 | int i; | ||
294 | |||
295 | PDC_LOG(("delwin() - called\n")); | ||
296 | |||
297 | if (!win) | ||
298 | return ERR; | ||
299 | |||
300 | /* subwindows use parents' lines */ | ||
301 | |||
302 | if (!(win->_flags & (_SUBWIN|_SUBPAD))) | ||
303 | for (i = 0; i < win->_maxy && win->_y[i]; i++) | ||
304 | if (win->_y[i]) | ||
305 | free(win->_y[i]); | ||
306 | |||
307 | free(win->_firstch); | ||
308 | free(win->_lastch); | ||
309 | free(win->_y); | ||
310 | free(win); | ||
311 | |||
312 | return OK; | ||
313 | } | ||
314 | |||
315 | int mvwin(WINDOW *win, int y, int x) | ||
316 | { | ||
317 | PDC_LOG(("mvwin() - called\n")); | ||
318 | |||
319 | if (!win || (y + win->_maxy > LINES || y < 0) | ||
320 | || (x + win->_maxx > COLS || x < 0)) | ||
321 | return ERR; | ||
322 | |||
323 | win->_begy = y; | ||
324 | win->_begx = x; | ||
325 | touchwin(win); | ||
326 | |||
327 | return OK; | ||
328 | } | ||
329 | |||
330 | WINDOW *subwin(WINDOW *orig, int nlines, int ncols, int begy, int begx) | ||
331 | { | ||
332 | WINDOW *win; | ||
333 | int i, j, k; | ||
334 | |||
335 | PDC_LOG(("subwin() - called: lines %d cols %d begy %d begx %d\n", | ||
336 | nlines, ncols, begy, begx)); | ||
337 | |||
338 | /* make sure window fits inside the original one */ | ||
339 | |||
340 | if (!orig || (begy < orig->_begy) || (begx < orig->_begx) || | ||
341 | (begy + nlines) > (orig->_begy + orig->_maxy) || | ||
342 | (begx + ncols) > (orig->_begx + orig->_maxx)) | ||
343 | return (WINDOW *)NULL; | ||
344 | |||
345 | j = begy - orig->_begy; | ||
346 | k = begx - orig->_begx; | ||
347 | |||
348 | if (!nlines) | ||
349 | nlines = orig->_maxy - j; | ||
350 | if (!ncols) | ||
351 | ncols = orig->_maxx - k; | ||
352 | |||
353 | win = PDC_makenew(nlines, ncols, begy, begx); | ||
354 | if (!win) | ||
355 | return (WINDOW *)NULL; | ||
356 | |||
357 | /* initialize window variables */ | ||
358 | |||
359 | win->_attrs = orig->_attrs; | ||
360 | win->_bkgd = orig->_bkgd; | ||
361 | win->_leaveit = orig->_leaveit; | ||
362 | win->_scroll = orig->_scroll; | ||
363 | win->_nodelay = orig->_nodelay; | ||
364 | win->_delayms = orig->_delayms; | ||
365 | win->_use_keypad = orig->_use_keypad; | ||
366 | win->_immed = orig->_immed; | ||
367 | win->_sync = orig->_sync; | ||
368 | win->_pary = j; | ||
369 | win->_parx = k; | ||
370 | win->_parent = orig; | ||
371 | |||
372 | for (i = 0; i < nlines; i++, j++) | ||
373 | win->_y[i] = orig->_y[j] + k; | ||
374 | |||
375 | win->_flags |= _SUBWIN; | ||
376 | |||
377 | return win; | ||
378 | } | ||
379 | |||
380 | WINDOW *derwin(WINDOW *orig, int nlines, int ncols, int begy, int begx) | ||
381 | { | ||
382 | return subwin(orig, nlines, ncols, begy + orig->_begy, begx + orig->_begx); | ||
383 | } | ||
384 | |||
385 | int mvderwin(WINDOW *win, int pary, int parx) | ||
386 | { | ||
387 | int i, j; | ||
388 | WINDOW *mypar; | ||
389 | |||
390 | if (!win || !(win->_parent)) | ||
391 | return ERR; | ||
392 | |||
393 | mypar = win->_parent; | ||
394 | |||
395 | if (pary < 0 || parx < 0 || (pary + win->_maxy) > mypar->_maxy || | ||
396 | (parx + win->_maxx) > mypar->_maxx) | ||
397 | return ERR; | ||
398 | |||
399 | j = pary; | ||
400 | |||
401 | for (i = 0; i < win->_maxy; i++) | ||
402 | win->_y[i] = (mypar->_y[j++]) + parx; | ||
403 | |||
404 | win->_pary = pary; | ||
405 | win->_parx = parx; | ||
406 | |||
407 | return OK; | ||
408 | } | ||
409 | |||
410 | WINDOW *dupwin(WINDOW *win) | ||
411 | { | ||
412 | WINDOW *new; | ||
413 | chtype *ptr, *ptr1; | ||
414 | int nlines, ncols, begy, begx, i; | ||
415 | |||
416 | if (!win) | ||
417 | return (WINDOW *)NULL; | ||
418 | |||
419 | nlines = win->_maxy; | ||
420 | ncols = win->_maxx; | ||
421 | begy = win->_begy; | ||
422 | begx = win->_begx; | ||
423 | |||
424 | new = PDC_makenew(nlines, ncols, begy, begx); | ||
425 | if (new) | ||
426 | new = PDC_makelines(new); | ||
427 | |||
428 | if (!new) | ||
429 | return (WINDOW *)NULL; | ||
430 | |||
431 | /* copy the contents of win into new */ | ||
432 | |||
433 | for (i = 0; i < nlines; i++) | ||
434 | { | ||
435 | for (ptr = new->_y[i], ptr1 = win->_y[i]; | ||
436 | ptr < new->_y[i] + ncols; ptr++, ptr1++) | ||
437 | *ptr = *ptr1; | ||
438 | |||
439 | new->_firstch[i] = 0; | ||
440 | new->_lastch[i] = ncols - 1; | ||
441 | } | ||
442 | |||
443 | new->_curx = win->_curx; | ||
444 | new->_cury = win->_cury; | ||
445 | new->_maxy = win->_maxy; | ||
446 | new->_maxx = win->_maxx; | ||
447 | new->_begy = win->_begy; | ||
448 | new->_begx = win->_begx; | ||
449 | new->_flags = win->_flags; | ||
450 | new->_attrs = win->_attrs; | ||
451 | new->_clear = win->_clear; | ||
452 | new->_leaveit = win->_leaveit; | ||
453 | new->_scroll = win->_scroll; | ||
454 | new->_nodelay = win->_nodelay; | ||
455 | new->_delayms = win->_delayms; | ||
456 | new->_use_keypad = win->_use_keypad; | ||
457 | new->_tmarg = win->_tmarg; | ||
458 | new->_bmarg = win->_bmarg; | ||
459 | new->_parx = win->_parx; | ||
460 | new->_pary = win->_pary; | ||
461 | new->_parent = win->_parent; | ||
462 | new->_bkgd = win->_bkgd; | ||
463 | new->_flags = win->_flags; | ||
464 | |||
465 | return new; | ||
466 | } | ||
467 | |||
468 | WINDOW *wgetparent(const WINDOW *win) | ||
469 | { | ||
470 | PDC_LOG(("wgetparent() - called\n")); | ||
471 | |||
472 | if (!win || !win->_parent) | ||
473 | return NULL; | ||
474 | |||
475 | return win->_parent; | ||
476 | } | ||
477 | |||
478 | WINDOW *resize_window(WINDOW *win, int nlines, int ncols) | ||
479 | { | ||
480 | WINDOW *new; | ||
481 | int i, save_cury, save_curx, new_begy, new_begx; | ||
482 | |||
483 | PDC_LOG(("resize_window() - called: nlines %d ncols %d\n", | ||
484 | nlines, ncols)); | ||
485 | |||
486 | if (!win || !SP) | ||
487 | return (WINDOW *)NULL; | ||
488 | |||
489 | if (win->_flags & _SUBPAD) | ||
490 | { | ||
491 | new = subpad(win->_parent, nlines, ncols, win->_begy, win->_begx); | ||
492 | if (!new) | ||
493 | return (WINDOW *)NULL; | ||
494 | } | ||
495 | else if (win->_flags & _SUBWIN) | ||
496 | { | ||
497 | new = subwin(win->_parent, nlines, ncols, win->_begy, win->_begx); | ||
498 | if (!new) | ||
499 | return (WINDOW *)NULL; | ||
500 | } | ||
501 | else | ||
502 | { | ||
503 | if (win == SP->slk_winptr) | ||
504 | { | ||
505 | new_begy = SP->lines - SP->slklines; | ||
506 | new_begx = 0; | ||
507 | } | ||
508 | else | ||
509 | { | ||
510 | new_begy = win->_begy; | ||
511 | new_begx = win->_begx; | ||
512 | } | ||
513 | |||
514 | new = PDC_makenew(nlines, ncols, new_begy, new_begx); | ||
515 | if (!new) | ||
516 | return (WINDOW *)NULL; | ||
517 | } | ||
518 | |||
519 | save_curx = min(win->_curx, (new->_maxx - 1)); | ||
520 | save_cury = min(win->_cury, (new->_maxy - 1)); | ||
521 | |||
522 | if (!(win->_flags & (_SUBPAD|_SUBWIN))) | ||
523 | { | ||
524 | new = PDC_makelines(new); | ||
525 | if (!new) | ||
526 | return (WINDOW *)NULL; | ||
527 | |||
528 | new->_bkgd = win->_bkgd; | ||
529 | werase(new); | ||
530 | |||
531 | copywin(win, new, 0, 0, 0, 0, min(win->_maxy, new->_maxy) - 1, | ||
532 | min(win->_maxx, new->_maxx) - 1, FALSE); | ||
533 | |||
534 | for (i = 0; i < win->_maxy && win->_y[i]; i++) | ||
535 | if (win->_y[i]) | ||
536 | free(win->_y[i]); | ||
537 | } | ||
538 | |||
539 | new->_flags = win->_flags; | ||
540 | new->_attrs = win->_attrs; | ||
541 | new->_clear = win->_clear; | ||
542 | new->_leaveit = win->_leaveit; | ||
543 | new->_scroll = win->_scroll; | ||
544 | new->_nodelay = win->_nodelay; | ||
545 | new->_delayms = win->_delayms; | ||
546 | new->_use_keypad = win->_use_keypad; | ||
547 | new->_tmarg = (win->_tmarg > new->_maxy - 1) ? 0 : win->_tmarg; | ||
548 | new->_bmarg = (win->_bmarg == win->_maxy - 1) ? | ||
549 | new->_maxy - 1 : min(win->_bmarg, (new->_maxy - 1)); | ||
550 | new->_parent = win->_parent; | ||
551 | new->_immed = win->_immed; | ||
552 | new->_sync = win->_sync; | ||
553 | new->_bkgd = win->_bkgd; | ||
554 | |||
555 | new->_curx = save_curx; | ||
556 | new->_cury = save_cury; | ||
557 | |||
558 | free(win->_firstch); | ||
559 | free(win->_lastch); | ||
560 | free(win->_y); | ||
561 | |||
562 | *win = *new; | ||
563 | free(new); | ||
564 | |||
565 | return win; | ||
566 | } | ||
567 | |||
568 | int wresize(WINDOW *win, int nlines, int ncols) | ||
569 | { | ||
570 | return (resize_window(win, nlines, ncols) ? OK : ERR); | ||
571 | } | ||
572 | |||
573 | void wsyncup(WINDOW *win) | ||
574 | { | ||
575 | WINDOW *tmp; | ||
576 | |||
577 | PDC_LOG(("wsyncup() - called\n")); | ||
578 | |||
579 | for (tmp = win; tmp; tmp = tmp->_parent) | ||
580 | touchwin(tmp); | ||
581 | } | ||
582 | |||
583 | int syncok(WINDOW *win, bool bf) | ||
584 | { | ||
585 | PDC_LOG(("syncok() - called\n")); | ||
586 | |||
587 | if (!win) | ||
588 | return ERR; | ||
589 | |||
590 | win->_sync = bf; | ||
591 | |||
592 | return OK; | ||
593 | } | ||
594 | |||
595 | bool is_subwin(const WINDOW *win) | ||
596 | { | ||
597 | PDC_LOG(("is_subwin() - called\n")); | ||
598 | |||
599 | if (!win) | ||
600 | return FALSE; | ||
601 | |||
602 | return ((win->_flags & _SUBWIN) ? TRUE : FALSE); | ||
603 | } | ||
604 | |||
605 | bool is_syncok(const WINDOW *win) | ||
606 | { | ||
607 | PDC_LOG(("is_syncok() - called\n")); | ||
608 | |||
609 | if (!win) | ||
610 | return FALSE; | ||
611 | |||
612 | return win->_sync; | ||
613 | } | ||
614 | |||
615 | void wcursyncup(WINDOW *win) | ||
616 | { | ||
617 | WINDOW *tmp; | ||
618 | |||
619 | PDC_LOG(("wcursyncup() - called\n")); | ||
620 | |||
621 | for (tmp = win; tmp && tmp->_parent; tmp = tmp->_parent) | ||
622 | wmove(tmp->_parent, tmp->_pary + tmp->_cury, tmp->_parx + tmp->_curx); | ||
623 | } | ||
624 | |||
625 | void wsyncdown(WINDOW *win) | ||
626 | { | ||
627 | WINDOW *tmp; | ||
628 | |||
629 | PDC_LOG(("wsyncdown() - called\n")); | ||
630 | |||
631 | for (tmp = win; tmp; tmp = tmp->_parent) | ||
632 | { | ||
633 | if (is_wintouched(tmp)) | ||
634 | { | ||
635 | touchwin(win); | ||
636 | break; | ||
637 | } | ||
638 | } | ||
639 | } | ||