Implement extended layout for GtkBin
This commit is contained in:
56
gtk/gtkbin.c
56
gtk/gtkbin.c
@ -26,6 +26,7 @@
|
|||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include "gtkbin.h"
|
#include "gtkbin.h"
|
||||||
|
#include "gtkextendedlayout.h"
|
||||||
#include "gtkintl.h"
|
#include "gtkintl.h"
|
||||||
#include "gtkalias.h"
|
#include "gtkalias.h"
|
||||||
|
|
||||||
@ -39,8 +40,12 @@ static void gtk_bin_forall (GtkContainer *container,
|
|||||||
gpointer callback_data);
|
gpointer callback_data);
|
||||||
static GType gtk_bin_child_type (GtkContainer *container);
|
static GType gtk_bin_child_type (GtkContainer *container);
|
||||||
|
|
||||||
|
static void gtk_bin_extended_layout_interface_init (GtkExtendedLayoutIface *iface);
|
||||||
|
|
||||||
|
G_DEFINE_ABSTRACT_TYPE_WITH_CODE (GtkBin, gtk_bin, GTK_TYPE_CONTAINER,
|
||||||
|
G_IMPLEMENT_INTERFACE (GTK_TYPE_EXTENDED_LAYOUT,
|
||||||
|
gtk_bin_extended_layout_interface_init))
|
||||||
|
|
||||||
G_DEFINE_ABSTRACT_TYPE (GtkBin, gtk_bin, GTK_TYPE_CONTAINER)
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gtk_bin_class_init (GtkBinClass *class)
|
gtk_bin_class_init (GtkBinClass *class)
|
||||||
@ -146,5 +151,54 @@ gtk_bin_get_child (GtkBin *bin)
|
|||||||
return bin->child;
|
return bin->child;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gtk_bin_extended_layout_get_desired_size (GtkExtendedLayout *layout,
|
||||||
|
GtkRequisition *minimum_size,
|
||||||
|
GtkRequisition *natural_size)
|
||||||
|
{
|
||||||
|
GtkBin *bin = GTK_BIN (layout);
|
||||||
|
|
||||||
|
g_return_if_fail (GTK_IS_EXTENDED_LAYOUT (bin->child));
|
||||||
|
|
||||||
|
gtk_extended_layout_get_desired_size (GTK_EXTENDED_LAYOUT (bin->child),
|
||||||
|
minimum_size, natural_size);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gtk_bin_extended_layout_get_width_for_height (GtkExtendedLayout *layout,
|
||||||
|
gint height,
|
||||||
|
gint *minimum_width,
|
||||||
|
gint *natural_width)
|
||||||
|
{
|
||||||
|
GtkBin *bin = GTK_BIN (layout);
|
||||||
|
|
||||||
|
g_return_if_fail (GTK_IS_EXTENDED_LAYOUT (bin->child));
|
||||||
|
|
||||||
|
gtk_extended_layout_get_width_for_height (GTK_EXTENDED_LAYOUT (bin->child),
|
||||||
|
height, minimum_width, natural_width);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gtk_bin_extended_layout_get_height_for_width (GtkExtendedLayout *layout,
|
||||||
|
gint width,
|
||||||
|
gint *minimum_height,
|
||||||
|
gint natural_height)
|
||||||
|
{
|
||||||
|
GtkBin *bin = GTK_BIN (layout);
|
||||||
|
|
||||||
|
g_return_if_fail (GTK_IS_EXTENDED_LAYOUT (bin->child));
|
||||||
|
|
||||||
|
gtk_extended_layout_get_height_for_width (GTK_EXTENDED_LAYOUT (bin->child),
|
||||||
|
width, minimum_height, natural_height);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gtk_bin_extended_layout_interface_init (GtkExtendedLayoutIface *iface)
|
||||||
|
{
|
||||||
|
iface->get_desired_size = gtk_bin_extended_layout_get_desired_size;
|
||||||
|
iface->get_height_for_width = gtk_bin_extended_layout_get_height_for_width;
|
||||||
|
iface->get_width_for_height = gtk_bin_extended_layout_get_width_for_height;
|
||||||
|
}
|
||||||
|
|
||||||
#define __GTK_BIN_C__
|
#define __GTK_BIN_C__
|
||||||
#include "gtkaliasdef.c"
|
#include "gtkaliasdef.c"
|
||||||
|
Reference in New Issue
Block a user