blob: fa0f40aa300e61681e8904767025bc1cef2d7733 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001/* vi:set ts=8 sts=4 sw=4:
2 *
3 * VIM - Vi IMproved by Bram Moolenaar
4 *
5 * Do ":help uganda" in Vim to read copying and usage conditions.
6 * Do ":help credits" in Vim to see a list of people who contributed.
7 */
8
9#ifndef __GTK_FORM_H__
10#define __GTK_FORM_H__
11
Bram Moolenaar98921892016-02-23 17:14:37 +010012#ifdef USE_GTK3
13#include <gtk/gtk.h>
14#else
Bram Moolenaar071d4272004-06-13 20:20:40 +000015#include <gdk/gdk.h>
16#include <gtk/gtkcontainer.h>
Bram Moolenaar98921892016-02-23 17:14:37 +010017#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +000018
19
20#ifdef __cplusplus
21extern "C" {
22#endif
23
24#define GTK_TYPE_FORM (gtk_form_get_type ())
Bram Moolenaar98921892016-02-23 17:14:37 +010025#ifdef USE_GTK3
26#define GTK_FORM(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GTK_TYPE_FORM, GtkForm))
27#define GTK_FORM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), GTK_TYPE_FORM, GtkFormClass))
28#define GTK_IS_FORM(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GTK_TYPE_FORM))
29#define GTK_IS_FORM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), GTK_TYPE_FORM))
30#else
Bram Moolenaar071d4272004-06-13 20:20:40 +000031#define GTK_FORM(obj) (GTK_CHECK_CAST ((obj), GTK_TYPE_FORM, GtkForm))
32#define GTK_FORM_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GTK_TYPE_FORM, GtkFormClass))
33#define GTK_IS_FORM(obj) (GTK_CHECK_TYPE ((obj), GTK_TYPE_FORM))
34#define GTK_IS_FORM_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GTK_TYPE_FORM))
Bram Moolenaar98921892016-02-23 17:14:37 +010035#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +000036
37
38typedef struct _GtkForm GtkForm;
39typedef struct _GtkFormClass GtkFormClass;
40
41struct _GtkForm
42{
43 GtkContainer container;
44
45 GList *children;
46
Bram Moolenaar98921892016-02-23 17:14:37 +010047#ifndef USE_GTK3
Bram Moolenaar071d4272004-06-13 20:20:40 +000048 guint width;
49 guint height;
Bram Moolenaar98921892016-02-23 17:14:37 +010050#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +000051
52 GdkWindow *bin_window;
53
Bram Moolenaar98921892016-02-23 17:14:37 +010054#ifndef USE_GTK3
Bram Moolenaar071d4272004-06-13 20:20:40 +000055 GdkVisibilityState visibility;
56 gulong configure_serial;
Bram Moolenaar98921892016-02-23 17:14:37 +010057#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +000058
59 gint freeze_count;
60};
61
62struct _GtkFormClass
63{
64 GtkContainerClass parent_class;
65};
66
Bram Moolenaar98921892016-02-23 17:14:37 +010067#ifdef USE_GTK3
68GType gtk_form_get_type(void);
69#else
Bram Moolenaar071d4272004-06-13 20:20:40 +000070GtkType gtk_form_get_type(void);
Bram Moolenaar98921892016-02-23 17:14:37 +010071#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +000072
73GtkWidget *gtk_form_new(void);
74
75void gtk_form_put(GtkForm * form, GtkWidget * widget,
76 gint x, gint y);
77
78void gtk_form_move(GtkForm *form, GtkWidget * widget,
79 gint x, gint y);
80
81void gtk_form_move_resize(GtkForm * form, GtkWidget * widget,
82 gint x, gint y,
83 gint w, gint h);
Bram Moolenaar071d4272004-06-13 20:20:40 +000084
85/* These disable and enable moving and repainting respectively. If you
86 * want to update the layout's offsets but do not want it to repaint
87 * itself, you should use these functions.
88 */
89
90void gtk_form_freeze(GtkForm *form);
91void gtk_form_thaw(GtkForm *form);
92
93
94#ifdef __cplusplus
95}
96#endif
97#endif /* __GTK_FORM_H__ */