VOID do_swtch(LONG tree, WORD obj, WORD item) { LONG where; WORD i, mask; if (item != HDDNPOP || obj != ROOT) { for (i = 0; rcs_bit2obj[i].objno && rcs_bit2obj[i].objno != item; i++) ; if (!rcs_bit2obj[i].objno) return; else { mask = rcs_bit2obj[i].flagmask; if (mask) where = OB_FLAGS(obj); else { mask = rcs_bit2obj[i].statemask; if (mask) where = OB_STATE(obj); else return; } } if (!(LWGET(where) & mask)) rcs_edited = TRUE; LWSET(where, LWGET(where) ^ mask); } }
/* ** Description ** Set window widget colour */ static void set_widget_colour(WINDOW_STRUCT * win, WORD widget, WORD top, WORD untop) { U_OB_SPEC * obspec; WORD object = 0; WORD new_colour; if(win->tree) { object = widgetmap[widget]; if(OB_FLAGS(&win->tree[object]) & INDIRECT) { obspec = ((U_OB_SPEC *)OB_SPEC(&win->tree[object])); } else { obspec = &win->tree[object].ob_spec; } if(win->status & WIN_TOPPED) { new_colour = top; } else { new_colour = untop; } switch(OB_TYPE(&win->tree[object]) & 0xff) { case G_BOX: case G_IBOX: case G_BOXCHAR: obspec->index = HL_TO_CL((CL_TO_HL(obspec->index) & 0xffff0000) | (new_colour & 0x0000ffff)); break; case G_TEXT: case G_BOXTEXT: case G_FTEXT: case G_FBOXTEXT: TE_COLOR_PUT(CL_TO_HL(obspec->tedinfo), new_colour); break; case G_IMAGE: BI_COLOR_PUT(CL_TO_HL(obspec->bitblk), new_colour); break; case G_BUTTON: case G_PROGDEF: case G_STRING: case G_TITLE: return; default: DEBUG1("Unsupported type %d in set_widget_colour, widget %d", OB_TYPE(&win->tree[object]), widget); return; } } }