Annotation of 43BSD/ucb/window/wwcursor.c, revision 1.1.1.1

1.1       root        1: #ifndef lint
                      2: static char sccsid[] = "@(#)wwcursor.c 3.8 4/24/85";
                      3: #endif
                      4: 
                      5: /*
                      6:  * Copyright (c) 1983 Regents of the University of California,
                      7:  * All rights reserved.  Redistribution permitted subject to
                      8:  * the terms of the Berkeley Software License Agreement.
                      9:  */
                     10: 
                     11: #include "ww.h"
                     12: 
                     13: wwcursor(w, on)
                     14: register struct ww *w;
                     15: {
                     16:        register char *win;
                     17: 
                     18:        if (on) {
                     19:                if (w->ww_hascursor)
                     20:                        return;
                     21:                w->ww_hascursor = 1;
                     22:        } else {
                     23:                if (!w->ww_hascursor)
                     24:                        return;
                     25:                w->ww_hascursor = 0;
                     26:        }
                     27:        if (wwcursormodes != 0) {
                     28:                win = &w->ww_win[w->ww_cur.r][w->ww_cur.c];
                     29:                *win ^= wwcursormodes;
                     30:                if (w->ww_cur.r < w->ww_i.t || w->ww_cur.r >= w->ww_i.b
                     31:                    || w->ww_cur.c < w->ww_i.l || w->ww_cur.c >= w->ww_i.r)
                     32:                        return;
                     33:                if (wwsmap[w->ww_cur.r][w->ww_cur.c] == w->ww_index) {
                     34:                        if (*win == 0)
                     35:                                w->ww_nvis[w->ww_cur.r]++;
                     36:                        else if (*win == wwcursormodes)
                     37:                                w->ww_nvis[w->ww_cur.r]--;
                     38:                        wwns[w->ww_cur.r][w->ww_cur.c].c_m ^= wwcursormodes;
                     39:                        wwtouched[w->ww_cur.r] |= WWU_TOUCHED;
                     40:                }
                     41:        }
                     42: }
                     43: 
                     44: wwsetcursormodes(new)
                     45: register new;
                     46: {
                     47:        register i;
                     48:        register struct ww *w;
                     49:        register old = wwcursormodes;
                     50: 
                     51:        new &= wwavailmodes;
                     52:        if (new == wwcursormodes)
                     53:                return;
                     54:        for (i = 0; i < NWW; i++)
                     55:                if (wwindex[i] != 0 && (w = wwindex[i])->ww_hascursor) {
                     56:                        wwcursor(w, 0);
                     57:                        wwcursormodes = new;
                     58:                        wwcursor(w, 1);
                     59:                        wwcursormodes = old;
                     60:                }
                     61:        wwcursormodes = new;
                     62: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.