

widget_t 
widget_create_menu (parent)
     widget_t parent;
{
  widget_t w = (widget_t) xcalloc (sizeof (struct menu));
  w->widget_type = widget_menu;
  w->dev = main_gdev;
  add_child (parent, w);
  return w;
}

widget_t 
widget_create_menuitem (parent)
     widget_t parent;
{
  widget_t w = (widget_t) xcalloc (sizeof (struct menuitem));
  w->widget_type = widget_menuitem;
  w->dev = main_gdev;
  add_child (parent, w);
  return w;
}

widget_t 
widget_create_frame (parent)
     widget_t parent;
{
  widget_t w = (widget_t) xcalloc (sizeof (struct frame));
  w->widget_type = widget_frame;
  w->dev = main_gdev;
  add_child (parent, w); 
  w->packed = 1;
  return w;
}

widget_t 
widget_create_shell ()
{
  widget_t w = (widget_t) xcalloc (sizeof (struct shell));
  w->widget_type = widget_shell;
  w->dev = main_gdev;
  w->packed = 1;
  return w;
}

widget_set_geometry(w, width, height)
widget_t w;
{
  w->width = width;
  w->height = height;
}


void 
widget_add (parent, child)
     widget_t parent, child;
{
  widget_t prev = add_child (parent, child);
}


void 
menuitem_set_pixmap (menuitem, pixmap)
     widget_t menuitem;
     gpixmap_t pixmap;
{
  integer_t x, y;
  ((menuitem_t) menuitem)->pixmap = pixmap;
  gdev_drawable_get_geometry (menuitem->dev, pixmap, &x, &y);

  menuitem->width = x;
  menuitem->height = y;

  widget_pack (menuitem->parent);
}
