void MCButton::SetShowBorder(MCExecContext& ctxt, bool setting)
{
	MCControl::SetShowBorder(ctxt, setting);
	if (MCaqua && menumode == WM_PULLDOWN)
	{
		freemenu(False);
		findmenu(true);
	}
	Redraw();
}
void MCButton::SetMenuName(MCExecContext& ctxt, MCNameRef p_name)
{
	freemenu(False);
	MCValueAssign(menuname, p_name);

	if (opened)
	{
		if (findmenu(true) && menu != nil)
			menu->installaccels(getstack());
	}
}
void MCButton::UpdateIconAndMenus(void)
{
	reseticon();
	freemenu(False);
	findmenu(true);
	if (parent != NULL && parent->gettype() == CT_GROUP)
	{
		parent->setstate(True, CS_NEED_UPDATE);
		if ((parent == MCmenubar || parent == MCdefaultmenubar) && !MClockmenus)
			MCscreen->updatemenubar(True);
	}
	Redraw();
}
void MCButton::SetMenuLines(MCExecContext& ctxt, uinteger_t* p_lines)
{
	if (p_lines != nil)
	{
		menulines = *p_lines;
		flags |= F_MENU_LINES;
	}
	else
	{
		flags &= ~F_MENU_LINES;
		menulines = DEFAULT_MENU_LINES;
	}
	freemenu(False);
}
void MCButton::SetMenuMode(MCExecContext& ctxt, intenum_t p_mode)
{
	if (entry != nil)
		deleteentry();
	else
		freemenu(False);

	setmenumode((uint1)p_mode);
	
	if (p_mode == WM_COMBO)
		createentry();
	else if (p_mode == WM_TOP_LEVEL)
	{
		if (getstyleint(flags) == F_MENU)
		{
			MCValueRelease(tabs);
			/* UNCHECKED */ MCStringSplit(menustring, MCSTR("\n"), nil, kMCStringOptionCompareExact, tabs);
		}
	}
	
	Redraw();
}
Exemple #6
0
void
freedc(DC *dc) {
  if(dc->info) {
    XFree(dc->info);
  }
  if(dc->font.xft_font)
    XftFontClose(dc->dpy, dc->font.xft_font);
  if(dc->font.set)
    XFreeFontSet(dc->dpy, dc->font.set);
  if(dc->font.xfont)
    XFreeFont(dc->dpy, dc->font.xfont);
  if(dc->menus){
    for(int i=0; i<dc->scrcount; ++i){
      freemenu(dc, &dc->menus[i]);
    }
    free(dc->menus);
  }
  if(dc->gc)
    XFreeGC(dc->dpy, dc->gc);
  if(dc->dpy)
    XCloseDisplay(dc->dpy);
  if(dc)
    free(dc);
}