Пример #1
0
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);
	}
}
Пример #2
0
/*
** 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;
    }
  }
}