X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;ds=sidebyside;f=gtk%2Fgtkhbox.c;h=3140cac67ba5f69d98572311e3c50202c933c26a;hb=f9c7a4bbd08b65f9c5280836ea3f343efec2c82a;hp=89c96aa569ac969c1c78244e0b34ec7f193006e1;hpb=279e878bddb61086f813385dc94fd04a5465473a;p=~andy%2Fgtk diff --git a/gtk/gtkhbox.c b/gtk/gtkhbox.c index 89c96aa56..3140cac67 100644 --- a/gtk/gtkhbox.c +++ b/gtk/gtkhbox.c @@ -2,63 +2,41 @@ * 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 #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) @@ -82,7 +60,7 @@ gtk_hbox_new (gboolean homogeneous, { 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; @@ -101,10 +79,6 @@ gtk_hbox_size_request (GtkWidget *widget, 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; @@ -163,14 +137,13 @@ gtk_hbox_size_allocate (GtkWidget *widget, 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; @@ -264,6 +237,9 @@ gtk_hbox_size_allocate (GtkWidget *widget, 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; @@ -320,6 +296,9 @@ gtk_hbox_size_allocate (GtkWidget *widget, 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); @@ -327,3 +306,6 @@ gtk_hbox_size_allocate (GtkWidget *widget, } } } + +#define __GTK_HBOX_C__ +#include "gtkaliasdef.c"