* Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
/*
- * Modified by the GTK+ Team and others 1997-1999. See the AUTHORS
+ * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
* file for a list of people on the GTK+ Team. See the ChangeLog
* files for a list of changes. These files are distributed with
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
+#include <config.h>
#include "gtkhbox.h"
+#include "gtkintl.h"
+#include "gtkalias.h"
-static void gtk_hbox_class_init (GtkHBoxClass *klass);
-static void gtk_hbox_init (GtkHBox *box);
static void gtk_hbox_size_request (GtkWidget *widget,
GtkRequisition *requisition);
static void gtk_hbox_size_allocate (GtkWidget *widget,
GtkAllocation *allocation);
-GtkType
-gtk_hbox_get_type (void)
-{
- static GtkType hbox_type = 0;
-
- if (!hbox_type)
- {
- static const GtkTypeInfo hbox_info =
- {
- "GtkHBox",
- sizeof (GtkHBox),
- sizeof (GtkHBoxClass),
- (GtkClassInitFunc) gtk_hbox_class_init,
- (GtkObjectInitFunc) gtk_hbox_init,
- /* reserved_1 */ NULL,
- /* reserved_2 */ NULL,
- (GtkClassInitFunc) NULL,
- };
-
- hbox_type = gtk_type_unique (GTK_TYPE_BOX, &hbox_info);
- }
-
- return hbox_type;
-}
+G_DEFINE_TYPE (GtkHBox, gtk_hbox, GTK_TYPE_BOX)
static void
gtk_hbox_class_init (GtkHBoxClass *class)
{
GtkHBox *hbox;
- hbox = gtk_type_new (gtk_hbox_get_type ());
+ hbox = g_object_new (GTK_TYPE_HBOX, NULL);
GTK_BOX (hbox)->spacing = spacing;
GTK_BOX (hbox)->homogeneous = homogeneous ? TRUE : FALSE;
gint nvis_children;
gint width;
- g_return_if_fail (widget != NULL);
- g_return_if_fail (GTK_IS_HBOX (widget));
- g_return_if_fail (requisition != NULL);
-
box = GTK_BOX (widget);
requisition->width = 0;
requisition->height = 0;
gint width;
gint extra;
gint x;
-
- g_return_if_fail (widget != NULL);
- g_return_if_fail (GTK_IS_HBOX (widget));
- g_return_if_fail (allocation != NULL);
+ GtkTextDirection direction;
box = GTK_BOX (widget);
widget->allocation = *allocation;
+ direction = gtk_widget_get_direction (widget);
+
nvis_children = 0;
nexpand_children = 0;
children = box->children;
child_allocation.x = x + (child_width - child_allocation.width) / 2;
}
+ if (direction == GTK_TEXT_DIR_RTL)
+ child_allocation.x = allocation->x + allocation->width - (child_allocation.x - allocation->x) - child_allocation.width;
+
gtk_widget_size_allocate (child->widget, &child_allocation);
x += child_width + box->spacing;
child_allocation.x = x + (child_width - child_allocation.width) / 2 - child_width;
}
+ if (direction == GTK_TEXT_DIR_RTL)
+ child_allocation.x = allocation->x + allocation->width - (child_allocation.x - allocation->x) - child_allocation.width;
+
gtk_widget_size_allocate (child->widget, &child_allocation);
x -= (child_width + box->spacing);
}
}
}
+
+#define __GTK_HBOX_C__
+#include "gtkaliasdef.c"