Re: How to put widget in CUSTOM GtkContainer

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Tomas Carnecky wrote:
> AlannY wrote:
> That still isn't the whole code! What does grid_class_init() do? Attach 
> both the whole grid header and source file to the email.

/* ********************************************** */

static void
grid_class_init (GridClass *class)
{
   GtkObjectClass *object_class;
   GtkWidgetClass *widget_class;

   object_class = (GtkObjectClass*) class;
   widget_class = (GtkWidgetClass*) class;

   parent_class = gtk_type_class (gtk_widget_get_type ());

   object_class->destroy = grid_destroy;

   widget_class->realize = grid_realize;
   widget_class->expose_event = grid_expose;
}

/* ********************************************** */
static void
grid_init (Grid *grid)
{
}

/* ********************************************** */
static void
grid_realize (GtkWidget *widget)
{
   Grid *grid;
   GdkWindowAttr attributes;
   gint attributes_mask;

   g_return_if_fail (widget != NULL);
   g_return_if_fail (IS_GRID (widget));

   GTK_WIDGET_SET_FLAGS (widget, GTK_REALIZED);
   grid = GRID (widget);

   attributes.x = widget->allocation.x;
   attributes.y = widget->allocation.y;
   attributes.width = widget->allocation.width;
   attributes.height = widget->allocation.height;
   attributes.wclass = GDK_INPUT_OUTPUT;
   attributes.window_type = GDK_WINDOW_CHILD;
   attributes.event_mask = gtk_widget_get_events (widget) | 
GDK_EXPOSURE_MASK;
   attributes.visual = gtk_widget_get_visual (widget);
   attributes.colormap = gtk_widget_get_colormap (widget);

   attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP;
   widget->window = gdk_window_new (widget->parent->window, &attributes, 
attributes_mask);

   widget->style = gtk_style_attach (widget->style, widget->window);

   gdk_window_set_user_data (widget->window, widget);

   gtk_style_set_background (widget->style, widget->window, 
GTK_STATE_ACTIVE);
}

/* ********************************************** */
static gboolean
grid_expose (GtkWidget *widget,
              GdkEventExpose *event)
{
   g_return_val_if_fail (widget != NULL, FALSE);
   g_return_val_if_fail (IS_GRID (widget), FALSE);
   g_return_val_if_fail (event != NULL, FALSE);

   if (event->count > 0)
     return FALSE;

   return FALSE;
}

/* ********************************************** */
static void
grid_destroy (GtkObject *object)
{
   g_return_if_fail (object != NULL);
   g_return_if_fail (IS_GRID (object));

   if (GTK_OBJECT_CLASS (parent_class)->destroy)
     (* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
}

/* ********************************************** */

That's all I have ;-)
_______________________________________________
gtk-list mailing list
gtk-list@xxxxxxxxx
http://mail.gnome.org/mailman/listinfo/gtk-list

[Index of Archives]     [Touch Screen Library]     [GIMP Users]     [Gnome]     [KDE]     [Yosemite News]     [Steve's Art]

  Powered by Linux