summaryrefslogtreecommitdiff
path: root/gtk/gtklayout.h
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@redhat.com>1998-11-24 04:45:29 +0000
committerOwen Taylor <otaylor@src.gnome.org>1998-11-24 04:45:29 +0000
commitee1d43929c3395fabd43e6b1d6a718363cbe198e (patch)
treef605372598f5668f17924ac8fbc8aa5ae8d38bbd /gtk/gtklayout.h
parent42faec1736c32cfbe1c44ac0ca0d81445c32fd0d (diff)
downloadgtk+-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.h104
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 */