blob: 073db6ac7386f209174a0cdf6b33b8545ebae852 [file] [log] [blame]
Bram Moolenaaredf3f972016-08-29 22:49:24 +02001/* vi:set ts=8 sts=4 sw=4 noet:
Bram Moolenaar071d4272004-06-13 20:20:40 +00002 *
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
Bram Moolenaar8a99e662020-10-21 16:10:21 +020024#define GTK_TYPE_FORM (gui_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;
Bram Moolenaar071d4272004-06-13 20:20:40 +000046 GdkWindow *bin_window;
Bram Moolenaar071d4272004-06-13 20:20:40 +000047 gint freeze_count;
48};
49
50struct _GtkFormClass
51{
52 GtkContainerClass parent_class;
53};
54
Bram Moolenaar98921892016-02-23 17:14:37 +010055#ifdef USE_GTK3
Bram Moolenaar8a99e662020-10-21 16:10:21 +020056GType gui_gtk_form_get_type(void);
Bram Moolenaar98921892016-02-23 17:14:37 +010057#else
Bram Moolenaar8a99e662020-10-21 16:10:21 +020058GtkType gui_gtk_form_get_type(void);
Bram Moolenaar98921892016-02-23 17:14:37 +010059#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +000060
Bram Moolenaar8a99e662020-10-21 16:10:21 +020061GtkWidget *gui_gtk_form_new(void);
Bram Moolenaar071d4272004-06-13 20:20:40 +000062
Bram Moolenaar8a99e662020-10-21 16:10:21 +020063void gui_gtk_form_put(GtkForm * form, GtkWidget * widget, gint x, gint y);
Bram Moolenaar071d4272004-06-13 20:20:40 +000064
Bram Moolenaar8a99e662020-10-21 16:10:21 +020065void gui_gtk_form_move(GtkForm *form, GtkWidget * widget, gint x, gint y);
Bram Moolenaar071d4272004-06-13 20:20:40 +000066
Bram Moolenaar8a99e662020-10-21 16:10:21 +020067void gui_gtk_form_move_resize(GtkForm * form, GtkWidget * widget, gint x, gint y, gint w, gint h);
Bram Moolenaar071d4272004-06-13 20:20:40 +000068
Bram Moolenaar9bf703d2019-11-30 19:44:38 +010069// These disable and enable moving and repainting respectively. If you
70// want to update the layout's offsets but do not want it to repaint
71// itself, you should use these functions.
Bram Moolenaar071d4272004-06-13 20:20:40 +000072
Bram Moolenaar8a99e662020-10-21 16:10:21 +020073void gui_gtk_form_freeze(GtkForm *form);
74void gui_gtk_form_thaw(GtkForm *form);
Bram Moolenaar071d4272004-06-13 20:20:40 +000075
76
77#ifdef __cplusplus
78}
79#endif
Bram Moolenaar9bf703d2019-11-30 19:44:38 +010080#endif // __GTK_FORM_H__