diff options
author | Owen Taylor <otaylor@redhat.com> | 1998-11-24 04:45:29 +0000 |
---|---|---|
committer | Owen Taylor <otaylor@src.gnome.org> | 1998-11-24 04:45:29 +0000 |
commit | ee1d43929c3395fabd43e6b1d6a718363cbe198e (patch) | |
tree | f605372598f5668f17924ac8fbc8aa5ae8d38bbd /gtk/gtklayout.h | |
parent | 42faec1736c32cfbe1c44ac0ca0d81445c32fd0d (diff) | |
download | gtk+-ee1d43929c3395fabd43e6b1d6a718363cbe198e.tar.gz |
Added layout widget for scrolling arbitrarily big areas. Added plug/socket
Mon Nov 23 22:10:09 1998 Owen Taylor <otaylor@redhat.com>
* gtk/Makefile.am gtk/gtk.h gtk/gtklayout.[ch]
gtk/gtkplug.[ch] gtk/gtksocket.[ch] gtk/gtk.h:
Added layout widget for scrolling arbitrarily big areas.
Added plug/socket widgets for interprocess embedding.
These widgets still, at some point, need to be
made more pure in their use of GDK, as opposed
to raw X.
* gtk/testgtk.c: Added test for layout widget.
Diffstat (limited to 'gtk/gtklayout.h')
-rw-r--r-- | gtk/gtklayout.h | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/gtk/gtklayout.h b/gtk/gtklayout.h new file mode 100644 index 0000000000..3f60f0bc6a --- /dev/null +++ b/gtk/gtklayout.h @@ -0,0 +1,104 @@ +/* Copyright Owen Taylor, 1998 + * + * 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 +#define __GTK_LAYOUT_H + +#include <gdk/gdk.h> +#include <gtk/gtkcontainer.h> +#include <gtk/gtkadjustment.h> + +#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) +#define GTK_IS_LAYOUT(obj) GTK_CHECK_TYPE (obj, gtk_layout_get_type ()) + +typedef struct _GtkLayout GtkLayout; +typedef struct _GtkLayoutClass GtkLayoutClass; +typedef struct _GtkLayoutChild GtkLayoutChild; + +struct _GtkLayoutChild { + GtkWidget *widget; + GdkWindow *window; /* For NO_WINDOW widgets */ + gint x; + gint y; +}; + +struct _GtkLayout { + GtkContainer container; + + GList *children; + + guint width; + guint height; + + guint xoffset; + guint yoffset; + + GtkAdjustment *hadjustment; + GtkAdjustment *vadjustment; + + GdkWindow *bin_window; + + GdkVisibilityState visibility; + gulong configure_serial; + gint scroll_x; + gint scroll_y; + + guint frozen : 1; +}; + +struct _GtkLayoutClass { + GtkContainerClass parent_class; + + void (*scroll_adjustments) (GtkLayout *text, + GtkAdjustment *hadjustment, + GtkAdjustment *vadjustment); +}; + +GtkWidget* gtk_layout_new (GtkAdjustment *hadjustment, + GtkAdjustment *vadjustment); + +guint gtk_layout_get_type (void); +void gtk_layout_put (GtkLayout *layout, + GtkWidget *widget, + gint x, + gint y); + +void gtk_layout_move (GtkLayout *layout, + GtkWidget *widget, + gint x, + gint y); + +void gtk_layout_set_size (GtkLayout *layout, + guint width, + guint height); + +/* These disable and enable moving and repainting the scrolling window of the GtkLayout, + * respectively. If you want to update the layout's offsets but do not want it to + * repaint itself, you should use these functions. + */ +void gtk_layout_freeze (GtkLayout *layout); +void gtk_layout_thaw (GtkLayout *layout); + +GtkAdjustment* gtk_layout_get_hadjustment (GtkLayout *layout); +GtkAdjustment* gtk_layout_get_vadjustment (GtkLayout *layout); +void gtk_layout_set_hadjustment (GtkLayout *layout, + GtkAdjustment *adjustment); +void gtk_layout_set_vadjustment (GtkLayout *layout, + GtkAdjustment *adjustment); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* __GTK_LAYOUT_H */ |