revert pavlov's changes at his request

This commit is contained in:
shaver%netscape.com 1998-11-25 17:50:35 +00:00
Родитель c13a79ad48
Коммит b1bc8c407e
2 изменённых файлов: 57 добавлений и 126 удалений

Просмотреть файл

@ -2,6 +2,9 @@
*
* This file may be distributed under either the terms of the
* Netscape Public License, or the GNU Library General Public License
*
* Note: No GTK+ or Mozilla code should be added to this file.
* The coding style should be that of the the GTK core.
*/
#include "gtklayout.h"
@ -30,9 +33,6 @@ static void gtk_layout_forall (GtkContainer *container,
gboolean include_internals,
GtkCallback callback,
gpointer callback_data);
static void gtk_layout_set_adjustments (GtkLayout *layout,
GtkAdjustment *hadj,
GtkAdjustment *vadj);
static void gtk_layout_realize_child (GtkLayout *layout,
GtkLayoutChild *child);
@ -73,7 +73,8 @@ gtk_layout_new (GtkAdjustment *hadjustment,
layout = gtk_type_new (gtk_layout_get_type());
gtk_layout_set_adjustments (layout, hadjustment, vadjustment);
gtk_layout_set_hadjustment (layout, hadjustment);
gtk_layout_set_vadjustment (layout, vadjustment);
return GTK_WIDGET (layout);
}
@ -95,65 +96,6 @@ gtk_layout_get_vadjustment (GtkLayout *layout)
return layout->vadjustment;
}
static void
gtk_layout_set_adjustments (GtkLayout *layout,
GtkAdjustment *hadj,
GtkAdjustment *vadj)
{
gboolean need_adjust = FALSE;
g_return_if_fail (layout != NULL);
g_return_if_fail (GTK_IS_LAYOUT (layout));
if (hadj)
g_return_if_fail (GTK_IS_ADJUSTMENT (hadj));
else
hadj = GTK_ADJUSTMENT (gtk_adjustment_new (0.0, 0.0, 0.0, 0.0, 0.0, 0.0));
if (vadj)
g_return_if_fail (GTK_IS_ADJUSTMENT (vadj));
else
vadj = GTK_ADJUSTMENT (gtk_adjustment_new (0.0, 0.0, 0.0, 0.0, 0.0, 0.0));
if (layout->hadjustment && (layout->hadjustment != hadj))
{
gtk_signal_disconnect_by_data (GTK_OBJECT (layout->hadjustment), layout);
gtk_object_unref (GTK_OBJECT (layout->hadjustment));
}
if (layout->vadjustment && (layout->vadjustment != vadj))
{
gtk_signal_disconnect_by_data (GTK_OBJECT (layout->vadjustment), layout);
gtk_object_unref (GTK_OBJECT (layout->vadjustment));
}
if (layout->hadjustment != hadj)
{
layout->hadjustment = hadj;
gtk_object_ref (GTK_OBJECT (layout->hadjustment));
gtk_object_sink (GTK_OBJECT (layout->hadjustment));
gtk_signal_connect (GTK_OBJECT (layout->hadjustment), "value_changed",
(GtkSignalFunc) gtk_layout_adjustment_changed,
layout);
need_adjust = TRUE;
}
if (layout->vadjustment != vadj)
{
layout->vadjustment = vadj;
gtk_object_ref (GTK_OBJECT (layout->vadjustment));
gtk_object_sink (GTK_OBJECT (layout->vadjustment));
gtk_signal_connect (GTK_OBJECT (layout->vadjustment), "value_changed",
(GtkSignalFunc) gtk_layout_adjustment_changed,
layout);
need_adjust = TRUE;
}
if (need_adjust)
gtk_layout_adjustment_changed (NULL, layout);
}
void
gtk_layout_set_hadjustment (GtkLayout *layout,
GtkAdjustment *adjustment)
@ -161,7 +103,19 @@ gtk_layout_set_hadjustment (GtkLayout *layout,
g_return_if_fail (layout != NULL);
g_return_if_fail (GTK_IS_LAYOUT (layout));
gtk_layout_set_adjustments (layout, adjustment, layout->vadjustment);
if (layout->hadjustment)
gtk_object_unref (GTK_OBJECT (layout->hadjustment));
if (!adjustment)
adjustment = GTK_ADJUSTMENT (gtk_adjustment_new (0.0, 0.0, 0.0, 10.0, 0.0, 0.0));
else
gtk_object_ref (GTK_OBJECT (adjustment));
gtk_signal_connect (GTK_OBJECT (adjustment), "value_changed",
GTK_SIGNAL_FUNC (gtk_layout_adjustment_changed),
layout);
layout->hadjustment = adjustment;
}
@ -172,7 +126,19 @@ gtk_layout_set_vadjustment (GtkLayout *layout,
g_return_if_fail (layout != NULL);
g_return_if_fail (GTK_IS_LAYOUT (layout));
gtk_layout_set_adjustments (layout, layout->hadjustment, adjustment);
if (layout->vadjustment)
gtk_object_unref (GTK_OBJECT (layout->hadjustment));
if (!adjustment)
adjustment = GTK_ADJUSTMENT (gtk_adjustment_new (0.0, 0.0, 0.0, 10.0, 0.0, 0.0));
else
gtk_object_ref (GTK_OBJECT (adjustment));
gtk_signal_connect (GTK_OBJECT (adjustment), "value_changed",
GTK_SIGNAL_FUNC (gtk_layout_adjustment_changed),
layout);
layout->vadjustment = adjustment;
}
@ -195,7 +161,6 @@ gtk_layout_put (GtkLayout *layout,
child->y = y;
child->widget->requisition.width = 0;
child->widget->requisition.height = 0;
child->mapped = FALSE;
layout->children = g_list_append (layout->children, child);
@ -326,20 +291,10 @@ gtk_layout_class_init (GtkLayoutClass *class)
widget_class->draw = gtk_layout_draw;
widget_class->expose_event = gtk_layout_expose;
widget_class->scroll_adjustments_signal =
gtk_signal_new ("scroll_adjustments",
GTK_RUN_LAST,
object_class->type,
GTK_SIGNAL_OFFSET (GtkLayoutClass, scroll_adjustments),
gtk_marshal_NONE__POINTER_POINTER,
GTK_TYPE_NONE, 2, GTK_TYPE_ADJUSTMENT, GTK_TYPE_ADJUSTMENT);
gravity_works = gtk_layout_gravity_works ();
container_class->remove = gtk_layout_remove;
container_class->forall = gtk_layout_forall;
class->scroll_adjustments = gtk_layout_set_adjustments;
}
static void
@ -445,14 +400,12 @@ gtk_layout_map (GtkWidget *widget)
{
GtkLayoutChild *child = tmp_list->data;
if (child->mapped && GTK_WIDGET_VISIBLE (child->widget))
{
if (!GTK_WIDGET_MAPPED (child->widget))
if (GTK_WIDGET_VISIBLE (child->widget) &&
!GTK_WIDGET_MAPPED (child->widget))
gtk_widget_map (child->widget);
if (child->window)
gdk_window_show (child->window);
}
tmp_list = tmp_list->next;
}
@ -727,22 +680,13 @@ gtk_layout_position_child (GtkLayout *layout,
if ((x >= G_MINSHORT) && (x <= G_MAXSHORT) &&
(y >= G_MINSHORT) && (y <= G_MAXSHORT))
{
if (!child->mapped)
if (GTK_WIDGET_VISIBLE (child->widget) &&
GTK_WIDGET_MAPPED (layout) &&
!GTK_WIDGET_MAPPED (child->widget))
{
child->mapped = TRUE;
if (GTK_WIDGET_MAPPED (layout) &&
GTK_WIDGET_VISIBLE (child->widget))
{
if (child->window)
gdk_window_show (child->window);
if (!GTK_WIDGET_MAPPED (child->widget))
gtk_widget_map (child->widget);
child->mapped = TRUE;
force_allocate = TRUE;
}
}
if (force_allocate)
{
@ -775,15 +719,11 @@ gtk_layout_position_child (GtkLayout *layout,
}
else
{
if (child->mapped)
{
child->mapped = FALSE;
if (child->window)
gdk_window_hide (child->window);
else if (GTK_WIDGET_MAPPED (child->widget))
gtk_widget_unmap (child->widget);
}
}
}
static void
@ -893,11 +833,10 @@ gtk_layout_adjustment_changed (GtkAdjustment *adjustment,
if (layout->frozen)
return;
if (!GTK_WIDGET_MAPPED (layout))
{
gtk_layout_position_children (layout);
if (!GTK_WIDGET_MAPPED (layout))
return;
}
if (dx > 0)
{
@ -996,8 +935,6 @@ gtk_layout_adjustment_changed (GtkAdjustment *adjustment,
-dy);
}
gtk_layout_position_children (layout);
/* We have to make sure that all exposes from this scroll get
* processed before we scroll again, or the expose events will
* have invalid coordinates.
@ -1200,4 +1137,3 @@ gtk_layout_gravity_works (void)
return (y == -20);
}

Просмотреть файл

@ -2,6 +2,9 @@
*
* This file may be distributed under either the terms of the
* Netscape Public License, or the GNU Library General Public License
*
* Note: No GTK+ or Mozilla code should be added to this file.
* The coding style should be that of the the GTK core.
*/
#ifndef __GTK_LAYOUT_H
@ -11,10 +14,6 @@
#include <gtk/gtkcontainer.h>
#include <gtk/gtkadjustment.h>
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
/*
* We don't want to require gnome-libs, in which GtkLayout now lives, but
@ -47,9 +46,10 @@ extern "C" {
#define gtk_layout_set_hadjustment moz_gtk_layout_set_hadjustment
#define gtk_layout_set_vadjustment moz_gtk_layout_set_vadjustment
#define GtkLayout MozGtkLayout
#define GtkLayoutClass MozGtkLayoutClass
#define GtkLayoutChild MozGtkLayoutChild
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#define GTK_LAYOUT(obj) GTK_CHECK_CAST (obj, gtk_layout_get_type (), GtkLayout)
#define GTK_LAYOUT_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, gtk_layout_get_type (), GtkLayoutClass)
@ -64,7 +64,6 @@ struct _GtkLayoutChild {
GdkWindow *window; /* For NO_WINDOW widgets */
gint x;
gint y;
gboolean mapped : 1;
};
struct _GtkLayout {
@ -93,10 +92,6 @@ struct _GtkLayout {
struct _GtkLayoutClass {
GtkContainerClass parent_class;
void (*scroll_adjustments) (GtkLayout *text,
GtkAdjustment *hadjustment,
GtkAdjustment *vadjustment);
};
GtkWidget* gtk_layout_new (GtkAdjustment *hadjustment,