diff options
-rw-r--r-- | docs/reference/gtk/gtk4-docs.xml | 1 | ||||
-rw-r--r-- | docs/reference/gtk/gtk4-sections.txt | 21 | ||||
-rw-r--r-- | gtk/gtk-autocleanups.h | 1 | ||||
-rw-r--r-- | gtk/gtk.h | 1 | ||||
-rw-r--r-- | gtk/gtkfixed.c | 3 | ||||
-rw-r--r-- | gtk/gtklayout.c | 816 | ||||
-rw-r--r-- | gtk/gtklayout.h | 97 | ||||
-rw-r--r-- | gtk/meson.build | 2 | ||||
-rw-r--r-- | tests/testgtk.c | 81 | ||||
-rw-r--r-- | testsuite/gtk/defaultvalue.c | 5 |
10 files changed, 0 insertions, 1028 deletions
diff --git a/docs/reference/gtk/gtk4-docs.xml b/docs/reference/gtk/gtk4-docs.xml index af8c97afd0..c1018bf53c 100644 --- a/docs/reference/gtk/gtk4-docs.xml +++ b/docs/reference/gtk/gtk4-docs.xml @@ -92,7 +92,6 @@ <xi:include href="xml/gtkheaderbar.xml" /> <xi:include href="xml/gtkoverlay.xml" /> <xi:include href="xml/gtkpaned.xml" /> - <xi:include href="xml/gtklayout.xml" /> <xi:include href="xml/gtknotebook.xml" /> <xi:include href="xml/gtkexpander.xml" /> <xi:include href="xml/gtkorientable.xml" /> diff --git a/docs/reference/gtk/gtk4-sections.txt b/docs/reference/gtk/gtk4-sections.txt index 167a16ee62..b2098ded5c 100644 --- a/docs/reference/gtk/gtk4-sections.txt +++ b/docs/reference/gtk/gtk4-sections.txt @@ -1740,27 +1740,6 @@ GtkLabelSelectionInfo </SECTION> <SECTION> -<FILE>gtklayout</FILE> -<TITLE>GtkLayout</TITLE> -GtkLayout -gtk_layout_new -gtk_layout_put -gtk_layout_move -gtk_layout_set_size -gtk_layout_get_size -<SUBSECTION Standard> -GTK_LAYOUT -GTK_IS_LAYOUT -GTK_TYPE_LAYOUT -GTK_LAYOUT_CLASS -GTK_IS_LAYOUT_CLASS -GTK_LAYOUT_GET_CLASS -<SUBSECTION Private> -GtkLayoutPrivate -gtk_layout_get_type -</SECTION> - -<SECTION> <FILE>gtklinkbutton</FILE> <TITLE>GtkLinkButton</TITLE> GtkLinkButton diff --git a/gtk/gtk-autocleanups.h b/gtk/gtk-autocleanups.h index 5ccb245539..edd4664b40 100644 --- a/gtk/gtk-autocleanups.h +++ b/gtk/gtk-autocleanups.h @@ -101,7 +101,6 @@ G_DEFINE_AUTOPTR_CLEANUP_FUNC(GtkIconTheme, g_object_unref) G_DEFINE_AUTOPTR_CLEANUP_FUNC(GtkIconView, g_object_unref) G_DEFINE_AUTOPTR_CLEANUP_FUNC(GtkImage, g_object_unref) G_DEFINE_AUTOPTR_CLEANUP_FUNC(GtkInfoBar, g_object_unref) -G_DEFINE_AUTOPTR_CLEANUP_FUNC(GtkLayout, g_object_unref) G_DEFINE_AUTOPTR_CLEANUP_FUNC(GtkLevelBar, g_object_unref) G_DEFINE_AUTOPTR_CLEANUP_FUNC(GtkLinkButton, g_object_unref) G_DEFINE_AUTOPTR_CLEANUP_FUNC(GtkListStore, g_object_unref) @@ -137,7 +137,6 @@ #include <gtk/gtkimmulticontext.h> #include <gtk/gtkinfobar.h> #include <gtk/gtklabel.h> -#include <gtk/gtklayout.h> #include <gtk/gtklayoutmanager.h> #include <gtk/gtklayoutchild.h> #include <gtk/gtklevelbar.h> diff --git a/gtk/gtkfixed.c b/gtk/gtkfixed.c index 1935de78a1..e41c887cb3 100644 --- a/gtk/gtkfixed.c +++ b/gtk/gtkfixed.c @@ -66,9 +66,6 @@ * If you know none of these things are an issue for your application, * and prefer the simplicity of #GtkFixed, by all means use the * widget. But you should be aware of the tradeoffs. - * - * See also #GtkLayout, which shares the ability to perform fixed positioning - * of child widgets and additionally adds custom drawing and scrollability. */ #include "config.h" diff --git a/gtk/gtklayout.c b/gtk/gtklayout.c deleted file mode 100644 index 074bdae5fc..0000000000 --- a/gtk/gtklayout.c +++ /dev/null @@ -1,816 +0,0 @@ -/* GTK - The GIMP Toolkit - * 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 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library. If not, see <http://www.gnu.org/licenses/>. - * - * GtkLayout: Widget for scrolling of arbitrary-sized areas. - * - * Copyright Owen Taylor, 1998 - */ - -/* - * 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 "gtklayout.h" - -#include "gdk/gdk.h" - -#include "gtkadjustment.h" -#include "gtkintl.h" -#include "gtkmarshalers.h" -#include "gtkprivate.h" -#include "gtkscrollable.h" - - -/** - * SECTION:gtklayout - * @Short_description: Infinite scrollable area containing child widgets - * and/or custom drawing - * @Title: GtkLayout - * @See_also: #GtkDrawingArea, #GtkFixed - * - * #GtkLayout is similar to #GtkDrawingArea in that it’s a “blank slate” and - * doesn’t do anything except paint a blank background by default. It’s - * different in that it supports scrolling natively due to implementing - * #GtkScrollable, and can contain child widgets since it’s a #GtkContainer. - * - * If you just want to draw, a #GtkDrawingArea is a better choice since it has - * lower overhead. If you just need to position child widgets at specific - * points, then #GtkFixed provides that functionality on its own. - */ - - -typedef struct _LayoutChild LayoutChild; - -typedef struct -{ - /* Properties */ - guint width; - guint height; - - GtkAdjustment *hadjustment; - GtkAdjustment *vadjustment; - - /* GtkScrollablePolicy needs to be checked when - * driving the scrollable adjustment values */ - guint hscroll_policy : 1; - guint vscroll_policy : 1; - - /* Properties */ - GList *children; -} GtkLayoutPrivate; - -struct _LayoutChild { - GtkWidget *widget; - gint x; - gint y; -}; - -enum { - PROP_0, - PROP_HADJUSTMENT, - PROP_VADJUSTMENT, - PROP_HSCROLL_POLICY, - PROP_VSCROLL_POLICY, - PROP_WIDTH, - PROP_HEIGHT -}; - -enum { - CHILD_PROP_0, - CHILD_PROP_X, - CHILD_PROP_Y -}; - -static void gtk_layout_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec); -static void gtk_layout_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec); -static void gtk_layout_finalize (GObject *object); -static void gtk_layout_measure (GtkWidget *widget, - GtkOrientation orientation, - int for_size, - int *minimum, - int *natural, - int *minimum_baseline, - int *natural_baseline); -static void gtk_layout_size_allocate (GtkWidget *widget, - int width, - int height, - int baseline); -static void gtk_layout_add (GtkContainer *container, - GtkWidget *widget); -static void gtk_layout_remove (GtkContainer *container, - GtkWidget *widget); -static void gtk_layout_forall (GtkContainer *container, - GtkCallback callback, - gpointer callback_data); -static void gtk_layout_set_child_property (GtkContainer *container, - GtkWidget *child, - guint property_id, - const GValue *value, - GParamSpec *pspec); -static void gtk_layout_get_child_property (GtkContainer *container, - GtkWidget *child, - guint property_id, - GValue *value, - GParamSpec *pspec); -static void gtk_layout_adjustment_changed (GtkAdjustment *adjustment, - GtkWidget *widget); - -static void gtk_layout_set_hadjustment_values (GtkLayout *layout); -static void gtk_layout_set_vadjustment_values (GtkLayout *layout); - -G_DEFINE_TYPE_WITH_CODE (GtkLayout, gtk_layout, GTK_TYPE_CONTAINER, - G_ADD_PRIVATE (GtkLayout) - G_IMPLEMENT_INTERFACE (GTK_TYPE_SCROLLABLE, NULL)) - -/* Public interface - */ -/** - * gtk_layout_new: - * @hadjustment: (allow-none): horizontal scroll adjustment, or %NULL - * @vadjustment: (allow-none): vertical scroll adjustment, or %NULL - * - * Creates a new #GtkLayout. Unless you have a specific adjustment - * you’d like the layout to use for scrolling, pass %NULL for - * @hadjustment and @vadjustment. - * - * Returns: a new #GtkLayout - **/ - -GtkWidget* -gtk_layout_new (GtkAdjustment *hadjustment, - GtkAdjustment *vadjustment) -{ - GtkLayout *layout; - - layout = g_object_new (GTK_TYPE_LAYOUT, - "hadjustment", hadjustment, - "vadjustment", vadjustment, - NULL); - - return GTK_WIDGET (layout); -} - -static void -gtk_layout_set_hadjustment_values (GtkLayout *layout) -{ - GtkLayoutPrivate *priv = gtk_layout_get_instance_private (layout); - GtkAllocation allocation; - GtkAdjustment *adj = priv->hadjustment; - gdouble old_value; - gdouble new_value; - gdouble new_upper; - - gtk_widget_get_allocation (GTK_WIDGET (layout), &allocation); - - old_value = gtk_adjustment_get_value (adj); - new_upper = MAX (allocation.width, priv->width); - - g_object_set (adj, - "lower", 0.0, - "upper", new_upper, - "page-size", (gdouble)allocation.width, - "step-increment", allocation.width * 0.1, - "page-increment", allocation.width * 0.9, - NULL); - - new_value = CLAMP (old_value, 0, new_upper - allocation.width); - if (new_value != old_value) - gtk_adjustment_set_value (adj, new_value); -} - -static void -gtk_layout_set_vadjustment_values (GtkLayout *layout) -{ - GtkLayoutPrivate *priv = gtk_layout_get_instance_private (layout); - GtkAllocation allocation; - GtkAdjustment *adj = priv->vadjustment; - gdouble old_value; - gdouble new_value; - gdouble new_upper; - - gtk_widget_get_allocation (GTK_WIDGET (layout), &allocation); - - old_value = gtk_adjustment_get_value (adj); - new_upper = MAX (allocation.height, priv->height); - - g_object_set (adj, - "lower", 0.0, - "upper", new_upper, - "page-size", (gdouble)allocation.height, - "step-increment", allocation.height * 0.1, - "page-increment", allocation.height * 0.9, - NULL); - - new_value = CLAMP (old_value, 0, new_upper - allocation.height); - if (new_value != old_value) - gtk_adjustment_set_value (adj, new_value); -} - -static void -gtk_layout_finalize (GObject *object) -{ - GtkLayout *layout = GTK_LAYOUT (object); - GtkLayoutPrivate *priv = gtk_layout_get_instance_private (layout); - - g_object_unref (priv->hadjustment); - g_object_unref (priv->vadjustment); - - G_OBJECT_CLASS (gtk_layout_parent_class)->finalize (object); -} - -static void -gtk_layout_set_hadjustment (GtkLayout *layout, - GtkAdjustment *adjustment) -{ - GtkLayoutPrivate *priv = gtk_layout_get_instance_private (layout); - - if (adjustment && priv->hadjustment == adjustment) - return; - - if (priv->hadjustment != NULL) - { - g_signal_handlers_disconnect_by_func (priv->hadjustment, - gtk_layout_adjustment_changed, - layout); - g_object_unref (priv->hadjustment); - } - - if (adjustment == NULL) - adjustment = gtk_adjustment_new (0.0, 0.0, 0.0, 0.0, 0.0, 0.0); - - g_signal_connect (adjustment, "value-changed", - G_CALLBACK (gtk_layout_adjustment_changed), layout); - priv->hadjustment = g_object_ref_sink (adjustment); - gtk_layout_set_hadjustment_values (layout); - - g_object_notify (G_OBJECT (layout), "hadjustment"); -} - -static void -gtk_layout_set_vadjustment (GtkLayout *layout, - GtkAdjustment *adjustment) -{ - GtkLayoutPrivate *priv = gtk_layout_get_instance_private (layout); - - if (adjustment && priv->vadjustment == adjustment) - return; - - if (priv->vadjustment != NULL) - { - g_signal_handlers_disconnect_by_func (priv->vadjustment, - gtk_layout_adjustment_changed, - layout); - g_object_unref (priv->vadjustment); - } - - if (adjustment == NULL) - adjustment = gtk_adjustment_new (0.0, 0.0, 0.0, 0.0, 0.0, 0.0); - - g_signal_connect (adjustment, "value-changed", - G_CALLBACK (gtk_layout_adjustment_changed), layout); - priv->vadjustment = g_object_ref_sink (adjustment); - gtk_layout_set_vadjustment_values (layout); - - g_object_notify (G_OBJECT (layout), "vadjustment"); -} - -static LayoutChild * -get_child (GtkLayout *layout, - GtkWidget *widget) -{ - GtkLayoutPrivate *priv = gtk_layout_get_instance_private (layout); - GList *children; - - children = priv->children; - while (children) - { - LayoutChild *child; - - child = children->data; - children = children->next; - - if (child->widget == widget) - return child; - } - - return NULL; -} - -/** - * gtk_layout_put: - * @layout: a #GtkLayout - * @child_widget: child widget - * @x: X position of child widget - * @y: Y position of child widget - * - * Adds @child_widget to @layout, at position (@x,@y). - * @layout becomes the new parent container of @child_widget. - * - **/ -void -gtk_layout_put (GtkLayout *layout, - GtkWidget *child_widget, - gint x, - gint y) -{ - GtkLayoutPrivate *priv = gtk_layout_get_instance_private (layout); - LayoutChild *child; - - g_return_if_fail (GTK_IS_LAYOUT (layout)); - g_return_if_fail (GTK_IS_WIDGET (child_widget)); - - child = g_new (LayoutChild, 1); - - child->widget = child_widget; - child->x = x; - child->y = y; - - priv->children = g_list_append (priv->children, child); - - gtk_widget_set_parent (child_widget, GTK_WIDGET (layout)); -} - -static void -gtk_layout_move_internal (GtkLayout *layout, - GtkWidget *widget, - gboolean change_x, - gint x, - gboolean change_y, - gint y) -{ - LayoutChild *child; - - child = get_child (layout, widget); - - g_assert (child); - - gtk_widget_freeze_child_notify (widget); - - if (change_x) - { - child->x = x; - gtk_widget_child_notify (widget, "x"); - } - - if (change_y) - { - child->y = y; - gtk_widget_child_notify (widget, "y"); - } - - gtk_widget_thaw_child_notify (widget); - - if (gtk_widget_get_visible (widget) && - gtk_widget_get_visible (GTK_WIDGET (layout))) - gtk_widget_queue_resize (widget); -} - -/** - * gtk_layout_move: - * @layout: a #GtkLayout - * @child_widget: a current child of @layout - * @x: X position to move to - * @y: Y position to move to - * - * Moves a current child of @layout to a new position. - * - **/ -void -gtk_layout_move (GtkLayout *layout, - GtkWidget *child_widget, - gint x, - gint y) -{ - g_return_if_fail (GTK_IS_LAYOUT (layout)); - g_return_if_fail (GTK_IS_WIDGET (child_widget)); - g_return_if_fail (gtk_widget_get_parent (child_widget) == GTK_WIDGET (layout)); - - gtk_layout_move_internal (layout, child_widget, TRUE, x, TRUE, y); -} - -/** - * gtk_layout_set_size: - * @layout: a #GtkLayout - * @width: width of entire scrollable area - * @height: height of entire scrollable area - * - * Sets the size of the scrollable area of the layout. - * - **/ -void -gtk_layout_set_size (GtkLayout *layout, - guint width, - guint height) -{ - GtkLayoutPrivate *priv = gtk_layout_get_instance_private (layout); - - g_return_if_fail (GTK_IS_LAYOUT (layout)); - - g_object_freeze_notify (G_OBJECT (layout)); - if (width != priv->width) - { - priv->width = width; - g_object_notify (G_OBJECT (layout), "width"); - } - if (height != priv->height) - { - priv->height = height; - g_object_notify (G_OBJECT (layout), "height"); - } - g_object_thaw_notify (G_OBJECT (layout)); - - gtk_layout_set_hadjustment_values (layout); - gtk_layout_set_vadjustment_values (layout); -} - -/** - * gtk_layout_get_size: - * @layout: a #GtkLayout - * @width: (out) (allow-none): location to store the width set on - * @layout, or %NULL - * @height: (out) (allow-none): location to store the height set on - * @layout, or %NULL - * - * Gets the size that has been set on the layout, and that determines - * the total extents of the layout’s scrollbar area. See - * gtk_layout_set_size (). - **/ -void -gtk_layout_get_size (GtkLayout *layout, - guint *width, - guint *height) -{ - GtkLayoutPrivate *priv = gtk_layout_get_instance_private (layout); - - g_return_if_fail (GTK_IS_LAYOUT (layout)); - - if (width) - *width = priv->width; - if (height) - *height = priv->height; -} - -/* Basic Object handling procedures - */ -static void -gtk_layout_class_init (GtkLayoutClass *class) -{ - GObjectClass *gobject_class; - GtkWidgetClass *widget_class; - GtkContainerClass *container_class; - - gobject_class = (GObjectClass*) class; - widget_class = (GtkWidgetClass*) class; - container_class = (GtkContainerClass*) class; - - gobject_class->set_property = gtk_layout_set_property; - gobject_class->get_property = gtk_layout_get_property; - gobject_class->finalize = gtk_layout_finalize; - - container_class->set_child_property = gtk_layout_set_child_property; - container_class->get_child_property = gtk_layout_get_child_property; - - gtk_container_class_install_child_property (container_class, - CHILD_PROP_X, - g_param_spec_int ("x", - P_("X position"), - P_("X position of child widget"), - G_MININT, - G_MAXINT, - 0, - GTK_PARAM_READWRITE)); - - gtk_container_class_install_child_property (container_class, - CHILD_PROP_Y, - g_param_spec_int ("y", - P_("Y position"), - P_("Y position of child widget"), - G_MININT, - G_MAXINT, - 0, - GTK_PARAM_READWRITE)); - - /* Scrollable interface */ - g_object_class_override_property (gobject_class, PROP_HADJUSTMENT, "hadjustment"); - g_object_class_override_property (gobject_class, PROP_VADJUSTMENT, "vadjustment"); - g_object_class_override_property (gobject_class, PROP_HSCROLL_POLICY, "hscroll-policy"); - g_object_class_override_property (gobject_class, PROP_VSCROLL_POLICY, "vscroll-policy"); - - g_object_class_install_property (gobject_class, - PROP_WIDTH, - g_param_spec_uint ("width", - P_("Width"), - P_("The width of the layout"), - 0, - G_MAXINT, - 100, - GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY)); - g_object_class_install_property (gobject_class, - PROP_HEIGHT, - g_param_spec_uint ("height", - P_("Height"), - P_("The height of the layout"), - 0, - G_MAXINT, - 100, - GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY)); - widget_class->measure = gtk_layout_measure; - widget_class->size_allocate = gtk_layout_size_allocate; - - container_class->add = gtk_layout_add; - container_class->remove = gtk_layout_remove; - container_class->forall = gtk_layout_forall; -} - -static void -gtk_layout_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) -{ - GtkLayout *layout = GTK_LAYOUT (object); - GtkLayoutPrivate *priv = gtk_layout_get_instance_private (layout); - - switch (prop_id) - { - case PROP_HADJUSTMENT: - g_value_set_object (value, priv->hadjustment); - break; - case PROP_VADJUSTMENT: - g_value_set_object (value, priv->vadjustment); - break; - case PROP_HSCROLL_POLICY: - g_value_set_enum (value, priv->hscroll_policy); - break; - case PROP_VSCROLL_POLICY: - g_value_set_enum (value, priv->vscroll_policy); - break; - case PROP_WIDTH: - g_value_set_uint (value, priv->width); - break; - case PROP_HEIGHT: - g_value_set_uint (value, priv->height); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } -} - -static void -gtk_layout_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) -{ - GtkLayout *layout = GTK_LAYOUT (object); - GtkLayoutPrivate *priv = gtk_layout_get_instance_private (layout); - - switch (prop_id) - { - case PROP_HADJUSTMENT: - gtk_layout_set_hadjustment (layout, g_value_get_object (value)); - break; - case PROP_VADJUSTMENT: - gtk_layout_set_vadjustment (layout, g_value_get_object (value)); - break; - case PROP_HSCROLL_POLICY: - if (priv->hscroll_policy != g_value_get_enum (value)) - { - priv->hscroll_policy = g_value_get_enum (value); - gtk_widget_queue_resize (GTK_WIDGET (layout)); - g_object_notify_by_pspec (object, pspec); - } - break; - case PROP_VSCROLL_POLICY: - if (priv->vscroll_policy != g_value_get_enum (value)) - { - priv->vscroll_policy = g_value_get_enum (value); - gtk_widget_queue_resize (GTK_WIDGET (layout)); - g_object_notify_by_pspec (object, pspec); - } - break; - case PROP_WIDTH: - gtk_layout_set_size (layout, g_value_get_uint (value), priv->height); - break; - case PROP_HEIGHT: - gtk_layout_set_size (layout, priv->width, g_value_get_uint (value)); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } -} - -static void -gtk_layout_set_child_property (GtkContainer *container, - GtkWidget *child, - guint property_id, - const GValue *value, - GParamSpec *pspec) -{ - switch (property_id) - { - case CHILD_PROP_X: - gtk_layout_move_internal (GTK_LAYOUT (container), - child, - TRUE, g_value_get_int (value), - FALSE, 0); - break; - case CHILD_PROP_Y: - gtk_layout_move_internal (GTK_LAYOUT (container), - child, - FALSE, 0, - TRUE, g_value_get_int (value)); - break; - default: - GTK_CONTAINER_WARN_INVALID_CHILD_PROPERTY_ID (container, property_id, pspec); - break; - } -} - -static void -gtk_layout_get_child_property (GtkContainer *container, - GtkWidget *child, - guint property_id, - GValue *value, - GParamSpec *pspec) -{ - LayoutChild *layout_child; - - layout_child = get_child (GTK_LAYOUT (container), child); - - switch (property_id) - { - case CHILD_PROP_X: - g_value_set_int (value, layout_child->x); - break; - case CHILD_PROP_Y: - g_value_set_int (value, layout_child->y); - break; - default: - GTK_CONTAINER_WARN_INVALID_CHILD_PROPERTY_ID (container, property_id, pspec); - break; - } -} - -static void -gtk_layout_init (GtkLayout *layout) -{ - GtkLayoutPrivate *priv = gtk_layout_get_instance_private (layout); - - gtk_widget_set_has_surface (GTK_WIDGET (layout), FALSE); - - priv->children = NULL; - - priv->width = 100; - priv->height = 100; - - priv->hadjustment = NULL; - priv->vadjustment = NULL; -} - -static void -gtk_layout_measure (GtkWidget *widget, - GtkOrientation orientation, - int for_size, - int *minimum, - int *natural, - int *minimum_baseline, - int *natural_baseline) -{ - *minimum = *natural = 0; -} - - -static void -gtk_layout_size_allocate (GtkWidget *widget, - int width, - int height, - int baseline) -{ - GtkLayout *layout = GTK_LAYOUT (widget); - GtkLayoutPrivate *priv = gtk_layout_get_instance_private (layout); - GList *tmp_list; - int scroll_x = 0; - int scroll_y = 0; - - tmp_list = priv->children; - - if (priv->hadjustment) - scroll_x = - gtk_adjustment_get_value (priv->hadjustment); - - if (priv->vadjustment) - scroll_y = - gtk_adjustment_get_value (priv->vadjustment); - - while (tmp_list) - { - LayoutChild *child = tmp_list->data; - GtkAllocation allocation; - GtkRequisition requisition; - - tmp_list = tmp_list->next; - - allocation.x = child->x + scroll_x; - allocation.y = child->y + scroll_y; - - gtk_widget_get_preferred_size (child->widget, &requisition, NULL); - allocation.width = requisition.width; - allocation.height = requisition.height; - - gtk_widget_size_allocate (child->widget, &allocation, -1); - } - - gtk_layout_set_hadjustment_values (layout); - gtk_layout_set_vadjustment_values (layout); -} - -/* Container methods - */ -static void -gtk_layout_add (GtkContainer *container, - GtkWidget *widget) -{ - gtk_layout_put (GTK_LAYOUT (container), widget, 0, 0); -} - -static void -gtk_layout_remove (GtkContainer *container, - GtkWidget *widget) -{ - GtkLayout *layout = GTK_LAYOUT (container); - GtkLayoutPrivate *priv = gtk_layout_get_instance_private (layout); - GList *tmp_list; - LayoutChild *child = NULL; - - tmp_list = priv->children; - while (tmp_list) - { - child = tmp_list->data; - if (child->widget == widget) - break; - tmp_list = tmp_list->next; - } - - if (tmp_list) - { - gtk_widget_unparent (widget); - - priv->children = g_list_remove_link (priv->children, tmp_list); - g_list_free_1 (tmp_list); - g_free (child); - } -} - -static void -gtk_layout_forall (GtkContainer *container, - GtkCallback callback, - gpointer callback_data) -{ - GtkLayout *layout = GTK_LAYOUT (container); - GtkLayoutPrivate *priv = gtk_layout_get_instance_private (layout); - LayoutChild *child; - GList *tmp_list; - - tmp_list = priv->children; - while (tmp_list) - { - child = tmp_list->data; - tmp_list = tmp_list->next; - - (* callback) (child->widget, callback_data); - } -} - -/* Callbacks */ - -static void -gtk_layout_adjustment_changed (GtkAdjustment *adjustment, - GtkWidget *layout) -{ - gtk_widget_queue_allocate (layout); -} diff --git a/gtk/gtklayout.h b/gtk/gtklayout.h deleted file mode 100644 index 272a02521f..0000000000 --- a/gtk/gtklayout.h +++ /dev/null @@ -1,97 +0,0 @@ -/* GTK - The GIMP Toolkit - * 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 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library. If not, see <http://www.gnu.org/licenses/>. - * - * GtkLayout: Widget for scrolling of arbitrary-sized areas. - * - * Copyright Owen Taylor, 1998 - */ - -/* - * 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/. - */ - -#ifndef __GTK_LAYOUT_H__ -#define __GTK_LAYOUT_H__ - - -#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION) -#error "Only <gtk/gtk.h> can be included directly." -#endif - -#include <gtk/gtkcontainer.h> - - -G_BEGIN_DECLS - -#define GTK_TYPE_LAYOUT (gtk_layout_get_type ()) -#define GTK_LAYOUT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_LAYOUT, GtkLayout)) -#define GTK_LAYOUT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_LAYOUT, GtkLayoutClass)) -#define GTK_IS_LAYOUT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_LAYOUT)) -#define GTK_IS_LAYOUT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_LAYOUT)) -#define GTK_LAYOUT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_LAYOUT, GtkLayoutClass)) - - -typedef struct _GtkLayout GtkLayout; -typedef struct _GtkLayoutClass GtkLayoutClass; - -struct _GtkLayout -{ - GtkContainer parent_instance; -}; - -struct _GtkLayoutClass -{ - GtkContainerClass parent_class; - - /* Padding for future expansion */ - void (*_gtk_reserved1) (void); - void (*_gtk_reserved2) (void); - void (*_gtk_reserved3) (void); - void (*_gtk_reserved4) (void); -}; - -GDK_AVAILABLE_IN_ALL -GType gtk_layout_get_type (void) G_GNUC_CONST; -GDK_AVAILABLE_IN_ALL -GtkWidget* gtk_layout_new (GtkAdjustment *hadjustment, - GtkAdjustment *vadjustment); -GDK_AVAILABLE_IN_ALL -void gtk_layout_put (GtkLayout *layout, - GtkWidget *child_widget, - gint x, - gint y); - -GDK_AVAILABLE_IN_ALL -void gtk_layout_move (GtkLayout *layout, - GtkWidget *child_widget, - gint x, - gint y); - -GDK_AVAILABLE_IN_ALL -void gtk_layout_set_size (GtkLayout *layout, - guint width, - guint height); -GDK_AVAILABLE_IN_ALL -void gtk_layout_get_size (GtkLayout *layout, - guint *width, - guint *height); - -G_END_DECLS - -#endif /* __GTK_LAYOUT_H__ */ diff --git a/gtk/meson.build b/gtk/meson.build index 8fc6b91f0e..9ec10acd9a 100644 --- a/gtk/meson.build +++ b/gtk/meson.build @@ -259,7 +259,6 @@ gtk_public_sources = files([ 'gtkimmulticontext.c', 'gtkinfobar.c', 'gtklabel.c', - 'gtklayout.c', 'gtklayoutchild.c', 'gtklayoutmanager.c', 'gtklevelbar.c', @@ -516,7 +515,6 @@ gtk_public_headers = files([ 'gtkimmulticontext.h', 'gtkinfobar.h', 'gtklabel.h', - 'gtklayout.h', 'gtklayoutchild.h', 'gtklayoutmanager.h', 'gtklevelbar.h', diff --git a/tests/testgtk.c b/tests/testgtk.c index a8d82b8e45..309a260aa6 100644 --- a/tests/testgtk.c +++ b/tests/testgtk.c @@ -5997,86 +5997,6 @@ create_mainloop (GtkWidget *widget) gtk_widget_destroy (window); } -void create_layout (GtkWidget *widget) -{ - GtkAdjustment *hadjustment, *vadjustment; - GtkLayout *layout; - static GtkWidget *window = NULL; - GtkWidget *layout_widget; - GtkWidget *scrolledwindow; - GtkWidget *button; - - if (!window) - { - gchar buf[16]; - - gint i, j; - - window = gtk_window_new (GTK_WINDOW_TOPLEVEL); - gtk_window_set_display (GTK_WINDOW (window), - gtk_widget_get_display (widget)); - - g_signal_connect (window, "destroy", - G_CALLBACK (gtk_widget_destroyed), - &window); - - gtk_window_set_title (GTK_WINDOW (window), "Layout"); - gtk_widget_set_size_request (window, 200, 200); - - scrolledwindow = gtk_scrolled_window_new (NULL, NULL); - gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow), - GTK_SHADOW_IN); - gtk_scrolled_window_set_placement (GTK_SCROLLED_WINDOW (scrolledwindow), - GTK_CORNER_TOP_RIGHT); - - gtk_container_add (GTK_CONTAINER (window), scrolledwindow); - - layout_widget = gtk_layout_new (NULL, NULL); - layout = GTK_LAYOUT (layout_widget); - gtk_container_add (GTK_CONTAINER (scrolledwindow), layout_widget); - - /* We set step sizes here since GtkLayout does not set - * them itself. - */ - hadjustment = gtk_scrollable_get_hadjustment (GTK_SCROLLABLE (layout)); - vadjustment = gtk_scrollable_get_vadjustment (GTK_SCROLLABLE (layout)); - gtk_adjustment_set_step_increment (hadjustment, 10.0); - gtk_adjustment_set_step_increment (vadjustment, 10.0); - gtk_scrollable_set_hadjustment (GTK_SCROLLABLE (layout), hadjustment); - gtk_scrollable_set_vadjustment (GTK_SCROLLABLE (layout), vadjustment); - - gtk_layout_set_size (layout, 1600, 128000); - - for (i=0 ; i < 16 ; i++) - for (j=0 ; j < 16 ; j++) - { - sprintf(buf, "Button %d, %d", i, j); - if ((i + j) % 2) - button = gtk_button_new_with_label (buf); - else - button = gtk_label_new (buf); - - gtk_layout_put (layout, button, j*100, i*100); - } - - for (i=16; i < 1280; i++) - { - sprintf(buf, "Button %d, %d", i, 0); - if (i % 2) - button = gtk_button_new_with_label (buf); - else - button = gtk_label_new (buf); - - gtk_layout_put (layout, button, 0, i*100); - } - } - - if (!gtk_widget_get_visible (window)) - gtk_widget_show (window); - else - gtk_widget_destroy (window); -} - static void show_native (GtkWidget *button, GtkFileChooserNative *native) @@ -6486,7 +6406,6 @@ struct { { "image", create_image }, { "key lookup", create_key_lookup }, { "labels", create_labels }, - { "layout", create_layout }, { "listbox", create_listbox }, { "menus", create_menus }, { "message dialog", create_message_dialog }, diff --git a/testsuite/gtk/defaultvalue.c b/testsuite/gtk/defaultvalue.c index 6404cda1ae..ae7849f1c7 100644 --- a/testsuite/gtk/defaultvalue.c +++ b/testsuite/gtk/defaultvalue.c @@ -273,11 +273,6 @@ G_GNUC_BEGIN_IGNORE_DEPRECATIONS G_GNUC_END_IGNORE_DEPRECATIONS - if (g_type_is_a (type, GTK_TYPE_LAYOUT) && - (strcmp (pspec->name, "hadjustment") == 0 || - strcmp (pspec->name, "vadjustment") == 0)) - continue; - if (g_type_is_a (type, GTK_TYPE_MESSAGE_DIALOG) && (strcmp (pspec->name, "image") == 0 || strcmp (pspec->name, "message-area") == 0)) |