gtkwidget.h 30.2 KB
Newer Older
Elliot Lee's avatar
Elliot Lee committed
1
2
3
4
/* GTK - The GIMP Toolkit
 * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
 *
 * This library is free software; you can redistribute it and/or
5
 * modify it under the terms of the GNU Lesser General Public
Elliot Lee's avatar
Elliot Lee committed
6
7
8
9
10
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the GNU
12
 * Lesser General Public License for more details.
Elliot Lee's avatar
Elliot Lee committed
13
 *
14
 * You should have received a copy of the GNU Lesser General Public
15
16
17
 * License along with this library; if not, write to the
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 * Boston, MA 02111-1307, USA.
Elliot Lee's avatar
Elliot Lee committed
18
 */
19
20

/*
21
 * Modified by the GTK+ Team and others 1997-2000.  See the AUTHORS
22
23
24
25
26
 * file for a list of people on the GTK+ Team.  See the ChangeLog
 * files for a list of changes.  These files are distributed with
 * GTK+ at ftp://ftp.gtk.org/pub/gtk/. 
 */

Elliot Lee's avatar
Elliot Lee committed
27
28
29
30
#ifndef __GTK_WIDGET_H__
#define __GTK_WIDGET_H__

#include <gdk/gdk.h>
Tim Janik's avatar
Tim Janik committed
31
#include <gtk/gtkaccelgroup.h>
Elliot Lee's avatar
Elliot Lee committed
32
#include <gtk/gtkobject.h>
33
#include <gtk/gtkadjustment.h>
Elliot Lee's avatar
Elliot Lee committed
34
#include <gtk/gtkstyle.h>
35
#include <gtk/gtksettings.h>
36
#include <atk/atkobject.h>
Elliot Lee's avatar
Elliot Lee committed
37
38
39
40

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
41
42


43
44
/* The flags that are used by GtkWidget on top of the
 * flags field of GtkObject.
Elliot Lee's avatar
Elliot Lee committed
45
 */
Tim Janik's avatar
Tim Janik committed
46
typedef enum
Elliot Lee's avatar
Elliot Lee committed
47
{
48
49
50
51
52
53
54
55
56
  GTK_TOPLEVEL         = 1 << 4,
  GTK_NO_WINDOW        = 1 << 5,
  GTK_REALIZED         = 1 << 6,
  GTK_MAPPED           = 1 << 7,
  GTK_VISIBLE          = 1 << 8,
  GTK_SENSITIVE        = 1 << 9,
  GTK_PARENT_SENSITIVE = 1 << 10,
  GTK_CAN_FOCUS        = 1 << 11,
  GTK_HAS_FOCUS        = 1 << 12,
57
58

  /* widget is allowed to receive the default via gtk_widget_grab_default
59
60
   * and will reserve space to draw the default if possible
   */
61
  GTK_CAN_DEFAULT      = 1 << 13,
62
63

  /* the widget currently is receiving the default action and should be drawn
64
65
   * appropriately if possible
   */
66
  GTK_HAS_DEFAULT      = 1 << 14,
67

68
69
  GTK_HAS_GRAB	       = 1 << 15,
  GTK_RC_STYLE	       = 1 << 16,
70
  GTK_COMPOSITE_CHILD  = 1 << 17,
Owen Taylor's avatar
Owen Taylor committed
71
  GTK_NO_REPARENT      = 1 << 18,
72
  GTK_APP_PAINTABLE    = 1 << 19,
73
74

  /* the widget when focused will receive the default action and have
75
76
   * HAS_DEFAULT set even if there is a different widget set as default
   */
77
  GTK_RECEIVES_DEFAULT = 1 << 20,
78

79
  GTK_DOUBLE_BUFFERED  = 1 << 21
80
} GtkWidgetFlags;
Elliot Lee's avatar
Elliot Lee committed
81

82
83
84
85
86
87
88
/* Kinds of widget-specific help */
typedef enum
{
  GTK_WIDGET_HELP_TOOLTIP,
  GTK_WIDGET_HELP_WHATS_THIS
} GtkWidgetHelpType;

89
90
/* Macro for casting a pointer to a GtkWidget or GtkWidgetClass pointer.
 * Macros for testing whether `widget' or `klass' are of type GTK_TYPE_WIDGET.
Elliot Lee's avatar
Elliot Lee committed
91
 */
92
#define GTK_TYPE_WIDGET			  (gtk_widget_get_type ())
Manish Singh's avatar
Manish Singh committed
93
94
95
96
97
#define GTK_WIDGET(widget)		  (G_TYPE_CHECK_INSTANCE_CAST ((widget), GTK_TYPE_WIDGET, GtkWidget))
#define GTK_WIDGET_CLASS(klass)		  (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_WIDGET, GtkWidgetClass))
#define GTK_IS_WIDGET(widget)		  (G_TYPE_CHECK_INSTANCE_TYPE ((widget), GTK_TYPE_WIDGET))
#define GTK_IS_WIDGET_CLASS(klass)	  (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_WIDGET))
#define GTK_WIDGET_GET_CLASS(obj)         (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_WIDGET, GtkWidgetClass))
Elliot Lee's avatar
Elliot Lee committed
98

99
/* Macros for extracting various fields from GtkWidget and GtkWidgetClass.
Elliot Lee's avatar
Elliot Lee committed
100
 */
101
102
103
#define GTK_WIDGET_TYPE(wid)		  (GTK_OBJECT_TYPE (wid))
#define GTK_WIDGET_STATE(wid)		  (GTK_WIDGET (wid)->state)
#define GTK_WIDGET_SAVED_STATE(wid)	  (GTK_WIDGET (wid)->saved_state)
Elliot Lee's avatar
Elliot Lee committed
104

105
106
/* Macros for extracting the widget flags from GtkWidget.
 */
107
#define GTK_WIDGET_FLAGS(wid)		  (GTK_OBJECT_FLAGS (wid))
108
109
110
111
112
#define GTK_WIDGET_TOPLEVEL(wid)	  ((GTK_WIDGET_FLAGS (wid) & GTK_TOPLEVEL) != 0)
#define GTK_WIDGET_NO_WINDOW(wid)	  ((GTK_WIDGET_FLAGS (wid) & GTK_NO_WINDOW) != 0)
#define GTK_WIDGET_REALIZED(wid)	  ((GTK_WIDGET_FLAGS (wid) & GTK_REALIZED) != 0)
#define GTK_WIDGET_MAPPED(wid)		  ((GTK_WIDGET_FLAGS (wid) & GTK_MAPPED) != 0)
#define GTK_WIDGET_VISIBLE(wid)		  ((GTK_WIDGET_FLAGS (wid) & GTK_VISIBLE) != 0)
113
#define GTK_WIDGET_DRAWABLE(wid)	  (GTK_WIDGET_VISIBLE (wid) && GTK_WIDGET_MAPPED (wid))
114
115
#define GTK_WIDGET_SENSITIVE(wid)	  ((GTK_WIDGET_FLAGS (wid) & GTK_SENSITIVE) != 0)
#define GTK_WIDGET_PARENT_SENSITIVE(wid)  ((GTK_WIDGET_FLAGS (wid) & GTK_PARENT_SENSITIVE) != 0)
116
117
#define GTK_WIDGET_IS_SENSITIVE(wid)	  (GTK_WIDGET_SENSITIVE (wid) && \
					   GTK_WIDGET_PARENT_SENSITIVE (wid))
118
119
120
121
122
123
#define GTK_WIDGET_CAN_FOCUS(wid)	  ((GTK_WIDGET_FLAGS (wid) & GTK_CAN_FOCUS) != 0)
#define GTK_WIDGET_HAS_FOCUS(wid)	  ((GTK_WIDGET_FLAGS (wid) & GTK_HAS_FOCUS) != 0)
#define GTK_WIDGET_CAN_DEFAULT(wid)	  ((GTK_WIDGET_FLAGS (wid) & GTK_CAN_DEFAULT) != 0)
#define GTK_WIDGET_HAS_DEFAULT(wid)	  ((GTK_WIDGET_FLAGS (wid) & GTK_HAS_DEFAULT) != 0)
#define GTK_WIDGET_HAS_GRAB(wid)	  ((GTK_WIDGET_FLAGS (wid) & GTK_HAS_GRAB) != 0)
#define GTK_WIDGET_RC_STYLE(wid)	  ((GTK_WIDGET_FLAGS (wid) & GTK_RC_STYLE) != 0)
124
#define GTK_WIDGET_COMPOSITE_CHILD(wid)	  ((GTK_WIDGET_FLAGS (wid) & GTK_COMPOSITE_CHILD) != 0)
125
#define GTK_WIDGET_APP_PAINTABLE(wid)	  ((GTK_WIDGET_FLAGS (wid) & GTK_APP_PAINTABLE) != 0)
126
#define GTK_WIDGET_RECEIVES_DEFAULT(wid)  ((GTK_WIDGET_FLAGS (wid) & GTK_RECEIVES_DEFAULT) != 0)
127
#define GTK_WIDGET_DOUBLE_BUFFERED(wid)	  ((GTK_WIDGET_FLAGS (wid) & GTK_DOUBLE_BUFFERED) != 0)
128
  
129
/* Macros for setting and clearing widget flags.
Elliot Lee's avatar
Elliot Lee committed
130
 */
131
132
#define GTK_WIDGET_SET_FLAGS(wid,flag)	  G_STMT_START{ (GTK_WIDGET_FLAGS (wid) |= (flag)); }G_STMT_END
#define GTK_WIDGET_UNSET_FLAGS(wid,flag)  G_STMT_START{ (GTK_WIDGET_FLAGS (wid) &= ~(flag)); }G_STMT_END
Elliot Lee's avatar
Elliot Lee committed
133

134
#define GTK_TYPE_REQUISITION              (gtk_requisition_get_type ())
135
136
137
138

/* forward declaration to avoid excessive includes (and concurrent includes)
 */
typedef struct _GtkRequisition	   GtkRequisition;
139
typedef 	GdkRectangle	   GtkAllocation;
140
141
142
143
typedef struct _GtkSelectionData   GtkSelectionData;
typedef struct _GtkWidgetClass	   GtkWidgetClass;
typedef struct _GtkWidgetAuxInfo   GtkWidgetAuxInfo;
typedef struct _GtkWidgetShapeInfo GtkWidgetShapeInfo;
144
typedef struct _GtkClipboard	   GtkClipboard;
145
146
typedef void     (*GtkCallback)        (GtkWidget        *widget,
					gpointer	  data);
Elliot Lee's avatar
Elliot Lee committed
147
148
149
150
151
152

/* A requisition is a desired amount of space which a
 *  widget may request.
 */
struct _GtkRequisition
{
153
154
  gint width;
  gint height;
Elliot Lee's avatar
Elliot Lee committed
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
};

/* The widget is the base of the tree for displayable objects.
 *  (A displayable object is one which takes up some amount
 *  of screen real estate). It provides a common base and interface
 *  which actual widgets must adhere to.
 */
struct _GtkWidget
{
  /* The object structure needs to be the first
   *  element in the widget structure in order for
   *  the object mechanism to work correctly. This
   *  allows a GtkWidget pointer to be cast to a
   *  GtkObject pointer.
   */
  GtkObject object;
171
  
172
173
174
175
176
177
  /* 16 bits of internally used private flags.
   * this will be packed into the same 4 byte alignment frame that
   * state and saved_state go. we therefore don't waste any new
   * space on this.
   */
  guint16 private_flags;
178
  
Elliot Lee's avatar
Elliot Lee committed
179
180
181
182
  /* The state of the widget. There are actually only
   *  5 widget states (defined in "gtkenums.h").
   */
  guint8 state;
183
  
Elliot Lee's avatar
Elliot Lee committed
184
  /* The saved state of the widget. When a widgets state
185
186
187
188
   *  is changed to GTK_STATE_INSENSITIVE via
   *  "gtk_widget_set_state" or "gtk_widget_set_sensitive"
   *  the old state is kept around in this field. The state
   *  will be restored once the widget gets sensitive again.
Elliot Lee's avatar
Elliot Lee committed
189
190
   */
  guint8 saved_state;
191
  
Elliot Lee's avatar
Elliot Lee committed
192
193
194
  /* The widgets name. If the widget does not have a name
   *  (the name is NULL), then its name (as returned by
   *  "gtk_widget_get_name") is its classes name.
195
196
   * Among other things, the widget name is used to determine
   *  the style to use for a widget.
Elliot Lee's avatar
Elliot Lee committed
197
198
   */
  gchar *name;
199
  
Elliot Lee's avatar
Elliot Lee committed
200
201
202
203
204
205
  /* The style for the widget. The style contains the
   *  colors the widget should be drawn in for each state
   *  along with graphics contexts used to draw with and
   *  the font to use for text.
   */
  GtkStyle *style;
206
  
Elliot Lee's avatar
Elliot Lee committed
207
208
209
  /* The widgets desired size.
   */
  GtkRequisition requisition;
210
  
Elliot Lee's avatar
Elliot Lee committed
211
212
213
  /* The widgets allocated size.
   */
  GtkAllocation allocation;
214
  
Elliot Lee's avatar
Elliot Lee committed
215
216
217
218
219
  /* The widgets window or its parent window if it does
   *  not have a window. (Which will be indicated by the
   *  GTK_NO_WINDOW flag being set).
   */
  GdkWindow *window;
220
  
Elliot Lee's avatar
Elliot Lee committed
221
222
223
224
225
226
227
228
229
230
231
232
233
234
  /* The widgets parent.
   */
  GtkWidget *parent;
};

struct _GtkWidgetClass
{
  /* The object class structure needs to be the first
   *  element in the widget class structure in order for
   *  the class mechanism to work correctly. This allows a
   *  GtkWidgetClass pointer to be cast to a GtkObjectClass
   *  pointer.
   */
  GtkObjectClass parent_class;
Soren Sandmann's avatar
Soren Sandmann committed
235
236

  /*< public >*/
237
  
238
  guint activate_signal;
239

240
  guint set_scroll_adjustments_signal;
241

Soren Sandmann's avatar
Soren Sandmann committed
242
243
  /*< private >*/
  
Tim Janik's avatar
Tim Janik committed
244
245
246
247
248
  /* seldomly overidden */
  void (*dispatch_child_properties_changed) (GtkWidget   *widget,
					     guint        n_pspecs,
					     GParamSpec **pspecs);

Elliot Lee's avatar
Elliot Lee committed
249
  /* basics */
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
  void (* show)		       (GtkWidget        *widget);
  void (* show_all)            (GtkWidget        *widget);
  void (* hide)		       (GtkWidget        *widget);
  void (* hide_all)            (GtkWidget        *widget);
  void (* map)		       (GtkWidget        *widget);
  void (* unmap)	       (GtkWidget        *widget);
  void (* realize)	       (GtkWidget        *widget);
  void (* unrealize)	       (GtkWidget        *widget);
  void (* size_request)	       (GtkWidget        *widget,
				GtkRequisition   *requisition);
  void (* size_allocate)       (GtkWidget        *widget,
				GtkAllocation    *allocation);
  void (* state_changed)       (GtkWidget        *widget,
				GtkStateType   	  previous_state);
  void (* parent_set)	       (GtkWidget        *widget,
				GtkWidget        *previous_parent);
266
267
  void (* hierarchy_changed)   (GtkWidget        *widget,
				GtkWidget        *previous_toplevel);
268
269
270
271
  void (* style_set)	       (GtkWidget        *widget,
				GtkStyle         *previous_style);
  void (* direction_changed)   (GtkWidget        *widget,
				GtkTextDirection  previous_direction);
272
273
  void (* grab_notify)         (GtkWidget        *widget,
				gboolean          was_grabbed);
Tim Janik's avatar
Tim Janik committed
274
275
  void (* child_notify)        (GtkWidget	 *widget,
				GParamSpec       *pspec);
276
  
277
  /* Mnemonics */
278
  gboolean (* mnemonic_activate) (GtkWidget    *widget,
279
280
				  gboolean      group_cycling);
  
281
  /* explicit focus */
Tim Janik's avatar
Tim Janik committed
282
  void     (* grab_focus)      (GtkWidget        *widget);
283
284
  gboolean (* focus)           (GtkWidget        *widget,
                                GtkDirectionType  direction);
285
  
Elliot Lee's avatar
Elliot Lee committed
286
  /* events */
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
  gboolean (* event)			(GtkWidget	     *widget,
					 GdkEvent	     *event);
  gboolean (* button_press_event)	(GtkWidget	     *widget,
					 GdkEventButton      *event);
  gboolean (* button_release_event)	(GtkWidget	     *widget,
					 GdkEventButton      *event);
  gboolean (* scroll_event)		(GtkWidget           *widget,
					 GdkEventScroll      *event);
  gboolean (* motion_notify_event)	(GtkWidget	     *widget,
					 GdkEventMotion      *event);
  gboolean (* delete_event)		(GtkWidget	     *widget,
					 GdkEventAny	     *event);
  gboolean (* destroy_event)		(GtkWidget	     *widget,
					 GdkEventAny	     *event);
  gboolean (* expose_event)		(GtkWidget	     *widget,
					 GdkEventExpose      *event);
  gboolean (* key_press_event)		(GtkWidget	     *widget,
					 GdkEventKey	     *event);
  gboolean (* key_release_event)	(GtkWidget	     *widget,
					 GdkEventKey	     *event);
  gboolean (* enter_notify_event)	(GtkWidget	     *widget,
					 GdkEventCrossing    *event);
  gboolean (* leave_notify_event)	(GtkWidget	     *widget,
					 GdkEventCrossing    *event);
  gboolean (* configure_event)		(GtkWidget	     *widget,
					 GdkEventConfigure   *event);
  gboolean (* focus_in_event)		(GtkWidget	     *widget,
					 GdkEventFocus       *event);
  gboolean (* focus_out_event)		(GtkWidget	     *widget,
					 GdkEventFocus       *event);
  gboolean (* map_event)		(GtkWidget	     *widget,
					 GdkEventAny	     *event);
  gboolean (* unmap_event)		(GtkWidget	     *widget,
					 GdkEventAny	     *event);
  gboolean (* property_notify_event)	(GtkWidget	     *widget,
					 GdkEventProperty    *event);
  gboolean (* selection_clear_event)	(GtkWidget	     *widget,
					 GdkEventSelection   *event);
  gboolean (* selection_request_event)	(GtkWidget	     *widget,
					 GdkEventSelection   *event);
  gboolean (* selection_notify_event)	(GtkWidget	     *widget,
					 GdkEventSelection   *event);
  gboolean (* proximity_in_event)	(GtkWidget	     *widget,
					 GdkEventProximity   *event);
  gboolean (* proximity_out_event)	(GtkWidget	     *widget,
					 GdkEventProximity   *event);
  gboolean (* visibility_notify_event)	(GtkWidget	     *widget,
					 GdkEventVisibility  *event);
  gboolean (* client_event)		(GtkWidget	     *widget,
					 GdkEventClient	     *event);
  gboolean (* no_expose_event)		(GtkWidget	     *widget,
					 GdkEventAny	     *event);
  gboolean (* window_state_event)	(GtkWidget	     *widget,
					 GdkEventWindowState *event);
Havoc Pennington's avatar
Havoc Pennington committed
341
  
Elliot Lee's avatar
Elliot Lee committed
342
  /* selection */
343
344
345
346
  void (* selection_get)           (GtkWidget          *widget,
				    GtkSelectionData   *selection_data,
				    guint               info,
				    guint               time);
347
  void (* selection_received)      (GtkWidget          *widget,
348
349
350
351
352
353
354
355
356
357
358
359
				    GtkSelectionData   *selection_data,
				    guint               time);

  /* Source side drag signals */
  void (* drag_begin)	           (GtkWidget	       *widget,
				    GdkDragContext     *context);
  void (* drag_end)	           (GtkWidget	       *widget,
				    GdkDragContext     *context);
  void (* drag_data_get)           (GtkWidget          *widget,
				    GdkDragContext     *context,
				    GtkSelectionData   *selection_data,
				    guint               info,
360
				    guint               time);
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
  void (* drag_data_delete)        (GtkWidget	       *widget,
				    GdkDragContext     *context);

  /* Target side drag signals */
  void (* drag_leave)	           (GtkWidget	       *widget,
				    GdkDragContext     *context,
				    guint               time);
  gboolean (* drag_motion)         (GtkWidget	       *widget,
				    GdkDragContext     *context,
				    gint                x,
				    gint                y,
				    guint               time);
  gboolean (* drag_drop)           (GtkWidget	       *widget,
				    GdkDragContext     *context,
				    gint                x,
				    gint                y,
				    guint               time);
  void (* drag_data_received)      (GtkWidget          *widget,
				    GdkDragContext     *context,
380
381
				    gint                x,
				    gint                y,
382
383
				    GtkSelectionData   *selection_data,
				    guint               info,
384
				    guint               time);
Owen Taylor's avatar
Owen Taylor committed
385
386

  /* Signals used only for keybindings */
387
  gboolean (* popup_menu)          (GtkWidget          *widget);
388
389
390
391
392
393

  /* If a widget has multiple tooltips/whatsthis, it should show the
   * one for the current focus location, or if that doesn't make
   * sense, should cycle through them showing each tip alongside
   * whatever piece of the widget it applies to.
   */
394
  gboolean (* show_help)           (GtkWidget          *widget,
395
                                    GtkWidgetHelpType   help_type);
396
397
398
399
400
  
  /* accessibility support 
   */
  AtkObject*   (* get_accessible)  (GtkWidget          *widget);

Owen Taylor's avatar
Owen Taylor committed
401
402
  void (* screen_changed) (GtkWidget *widget,
			   GdkScreen *previous_screen);
Owen Taylor's avatar
Owen Taylor committed
403
  /* Padding for future expansion */
404
405
406
407
408
409
410
411
  void (*_gtk_reserved1) (void);
  void (*_gtk_reserved2) (void);
  void (*_gtk_reserved3) (void);
  void (*_gtk_reserved4) (void);
  void (*_gtk_reserved5) (void);
  void (*_gtk_reserved6) (void);
  void (*_gtk_reserved7) (void);
  void (*_gtk_reserved8) (void);
Elliot Lee's avatar
Elliot Lee committed
412
413
414
415
};

struct _GtkWidgetAuxInfo
{
416
417
418
419
  gint x;
  gint y;
  gint width;
  gint height;
420
421
  guint x_set : 1;
  guint y_set : 1;
Elliot Lee's avatar
Elliot Lee committed
422
423
424
425
426
427
428
429
430
};

struct _GtkWidgetShapeInfo
{
  gint16     offset_x;
  gint16     offset_y;
  GdkBitmap *shape_mask;
};

Manish Singh's avatar
Manish Singh committed
431
432
GType	   gtk_widget_get_type		  (void) G_GNUC_CONST;
GtkWidget* gtk_widget_new		  (GType		type,
433
					   const gchar	       *first_property_name,
Elliot Lee's avatar
Elliot Lee committed
434
					   ...);
435
GtkWidget* gtk_widget_ref		  (GtkWidget	       *widget);
436
437
438
439
void	   gtk_widget_unref		  (GtkWidget	       *widget);
void	   gtk_widget_destroy		  (GtkWidget	       *widget);
void	   gtk_widget_destroyed		  (GtkWidget	       *widget,
					   GtkWidget	      **widget_pointer);
Owen Taylor's avatar
Owen Taylor committed
440
#ifndef GTK_DISABLE_DEPRECATED
441
void	   gtk_widget_set		  (GtkWidget	       *widget,
442
					   const gchar         *first_property_name,
Elliot Lee's avatar
Elliot Lee committed
443
					   ...);
Owen Taylor's avatar
Owen Taylor committed
444
#endif /* GTK_DISABLE_DEPRECATED */
445
446
void	   gtk_widget_unparent		  (GtkWidget	       *widget);
void	   gtk_widget_show		  (GtkWidget	       *widget);
447
void       gtk_widget_show_now            (GtkWidget           *widget);
448
449
450
451
452
453
454
void	   gtk_widget_hide		  (GtkWidget	       *widget);
void	   gtk_widget_show_all		  (GtkWidget	       *widget);
void	   gtk_widget_hide_all		  (GtkWidget	       *widget);
void	   gtk_widget_map		  (GtkWidget	       *widget);
void	   gtk_widget_unmap		  (GtkWidget	       *widget);
void	   gtk_widget_realize		  (GtkWidget	       *widget);
void	   gtk_widget_unrealize		  (GtkWidget	       *widget);
455
456

/* Queuing draws */
457
void	   gtk_widget_queue_draw	  (GtkWidget	       *widget);
458
459
460
461
462
void	   gtk_widget_queue_draw_area	  (GtkWidget	       *widget,
					   gint                 x,
					   gint                 y,
					   gint                 width,
					   gint                 height);
463
#ifndef GTK_DISABLE_DEPRECATED
464
465
466
467
468
469
void	   gtk_widget_queue_clear	  (GtkWidget	       *widget);
void	   gtk_widget_queue_clear_area	  (GtkWidget	       *widget,
					   gint                 x,
					   gint                 y,
					   gint                 width,
					   gint                 height);
470
#endif /* GTK_DISABLE_DEPRECATED */
471
472


473
void	   gtk_widget_queue_resize	  (GtkWidget	       *widget);
474
#ifndef GTK_DISABLE_DEPRECATED
475
476
void	   gtk_widget_draw		  (GtkWidget	       *widget,
					   GdkRectangle	       *area);
477
#endif /* GTK_DISABLE_DEPRECATED */
478
void	   gtk_widget_size_request	  (GtkWidget	       *widget,
Elliot Lee's avatar
Elliot Lee committed
479
					   GtkRequisition      *requisition);
480
void	   gtk_widget_size_allocate	  (GtkWidget	       *widget,
Elliot Lee's avatar
Elliot Lee committed
481
					   GtkAllocation       *allocation);
482
483
void       gtk_widget_get_child_requisition (GtkWidget	       *widget,
					     GtkRequisition    *requisition);
Tim Janik's avatar
Tim Janik committed
484
485
486
487
void	   gtk_widget_add_accelerator	  (GtkWidget           *widget,
					   const gchar         *accel_signal,
					   GtkAccelGroup       *accel_group,
					   guint                accel_key,
488
					   GdkModifierType      accel_mods,
Tim Janik's avatar
Tim Janik committed
489
					   GtkAccelFlags        accel_flags);
490
gboolean   gtk_widget_remove_accelerator  (GtkWidget           *widget,
Tim Janik's avatar
Tim Janik committed
491
492
					   GtkAccelGroup       *accel_group,
					   guint                accel_key,
493
					   GdkModifierType      accel_mods);
494
void       gtk_widget_set_accel_path      (GtkWidget           *widget,
495
496
					   const gchar         *accel_path,
					   GtkAccelGroup       *accel_group);
497
498
const gchar* _gtk_widget_get_accel_path   (GtkWidget           *widget,
					   gboolean	       *locked);
499
GList*     gtk_widget_list_accel_closures (GtkWidget	       *widget);
500
gboolean   gtk_widget_mnemonic_activate   (GtkWidget           *widget,
501
					   gboolean             group_cycling);
502
gboolean   gtk_widget_event		  (GtkWidget	       *widget,
503
					   GdkEvent	       *event);
504
505
gint       gtk_widget_send_expose         (GtkWidget           *widget,
					   GdkEvent            *event);
506

507
508
509
510
gboolean   gtk_widget_activate		     (GtkWidget	       *widget);
gboolean   gtk_widget_set_scroll_adjustments (GtkWidget        *widget,
					      GtkAdjustment    *hadjustment,
					      GtkAdjustment    *vadjustment);
511
     
512
513
void	   gtk_widget_reparent		  (GtkWidget	       *widget,
					   GtkWidget	       *new_parent);
514
gboolean   gtk_widget_intersect		  (GtkWidget	       *widget,
515
516
					   GdkRectangle	       *area,
					   GdkRectangle	       *intersection);
517
518
GdkRegion *gtk_widget_region_intersect	  (GtkWidget	       *widget,
					   GdkRegion	       *region);
519

Tim Janik's avatar
Tim Janik committed
520
521
522
523
524
void	gtk_widget_freeze_child_notify	  (GtkWidget	       *widget);
void	gtk_widget_child_notify		  (GtkWidget	       *widget,
					   const gchar	       *child_property);
void	gtk_widget_thaw_child_notify	  (GtkWidget	       *widget);

525
gboolean   gtk_widget_is_focus            (GtkWidget           *widget);
526
527
528
void	   gtk_widget_grab_focus	  (GtkWidget	       *widget);
void	   gtk_widget_grab_default	  (GtkWidget	       *widget);

529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
void                  gtk_widget_set_name               (GtkWidget    *widget,
							 const gchar  *name);
G_CONST_RETURN gchar* gtk_widget_get_name               (GtkWidget    *widget);
void                  gtk_widget_set_state              (GtkWidget    *widget,
							 GtkStateType  state);
void                  gtk_widget_set_sensitive          (GtkWidget    *widget,
							 gboolean      sensitive);
void                  gtk_widget_set_app_paintable      (GtkWidget    *widget,
							 gboolean      app_paintable);
void                  gtk_widget_set_double_buffered    (GtkWidget    *widget,
							 gboolean      double_buffered);
void                  gtk_widget_set_redraw_on_allocate (GtkWidget    *widget,
							 gboolean      redraw_on_allocate);
void                  gtk_widget_set_parent             (GtkWidget    *widget,
							 GtkWidget    *parent);
void                  gtk_widget_set_parent_window      (GtkWidget    *widget,
							 GdkWindow    *parent_window);
void                  gtk_widget_set_child_visible      (GtkWidget    *widget,
							 gboolean      is_visible);
gboolean              gtk_widget_get_child_visible      (GtkWidget    *widget);

550
GtkWidget *gtk_widget_get_parent          (GtkWidget           *widget);
551
GdkWindow *gtk_widget_get_parent_window	  (GtkWidget	       *widget);
552

553
554
gboolean   gtk_widget_child_focus         (GtkWidget           *widget,
                                           GtkDirectionType     direction);
Havoc Pennington's avatar
Havoc Pennington committed
555
556
557
558
559
560
561
562

void       gtk_widget_set_size_request    (GtkWidget           *widget,
                                           gint                 width,
                                           gint                 height);
void       gtk_widget_get_size_request    (GtkWidget           *widget,
                                           gint                *width,
                                           gint                *height);
#ifndef GTK_DISABLE_DEPRECATED
563
564
565
566
567
568
void	   gtk_widget_set_uposition	  (GtkWidget	       *widget,
					   gint			x,
					   gint			y);
void	   gtk_widget_set_usize		  (GtkWidget	       *widget,
					   gint			width,
					   gint			height);
Havoc Pennington's avatar
Havoc Pennington committed
569
570
#endif

571
572
void	   gtk_widget_set_events	  (GtkWidget	       *widget,
					   gint			events);
573
574
void       gtk_widget_add_events          (GtkWidget           *widget,
					   gint	                events);
575
576
void	   gtk_widget_set_extension_events (GtkWidget		*widget,
					    GdkExtensionMode	mode);
Elliot Lee's avatar
Elliot Lee committed
577

578
579
580
GdkExtensionMode gtk_widget_get_extension_events (GtkWidget	*widget);
GtkWidget*   gtk_widget_get_toplevel	(GtkWidget	*widget);
GtkWidget*   gtk_widget_get_ancestor	(GtkWidget	*widget,
Manish Singh's avatar
Manish Singh committed
581
					 GType		 widget_type);
582
583
GdkColormap* gtk_widget_get_colormap	(GtkWidget	*widget);
GdkVisual*   gtk_widget_get_visual	(GtkWidget	*widget);
584

585
586
587
588
589
590
591
GdkScreen *   gtk_widget_get_screen      (GtkWidget *widget);
gboolean      gtk_widget_has_screen      (GtkWidget *widget);
GdkDisplay *  gtk_widget_get_display     (GtkWidget *widget);
GdkWindow *   gtk_widget_get_root_window (GtkWidget *widget);
GtkSettings*  gtk_widget_get_settings    (GtkWidget *widget);
GtkClipboard *gtk_widget_get_clipboard   (GtkWidget *widget,
					  GdkAtom    selection);
592

593
594
595
596
597
598
#ifndef GTK_DISABLE_DEPRECATED
#define gtk_widget_set_visual(widget,visual)  ((void) 0)
#define gtk_widget_push_visual(visual)        ((void) 0)
#define gtk_widget_pop_visual()               ((void) 0)
#define gtk_widget_set_default_visual(visual) ((void) 0)
#endif /* GTK_DISABLE_DEPRECATED */
599
600
601
602

/* Accessibility support */
AtkObject*       gtk_widget_get_accessible               (GtkWidget          *widget);

603
604
605
606
607
608
609
610
611
/* The following functions must not be called on an already
 * realized widget. Because it is possible that somebody
 * can call get_colormap() or get_visual() and save the
 * result, these functions are probably only safe to
 * call in a widget's init() function.
 */
void         gtk_widget_set_colormap    (GtkWidget      *widget,
					 GdkColormap    *colormap);

612
613
614
615
616
gint	     gtk_widget_get_events	(GtkWidget	*widget);
void	     gtk_widget_get_pointer	(GtkWidget	*widget,
					 gint		*x,
					 gint		*y);

617
gboolean     gtk_widget_is_ancestor	(GtkWidget	*widget,
618
619
					 GtkWidget	*ancestor);

620
621
622
623
624
625
626
gboolean     gtk_widget_translate_coordinates (GtkWidget  *src_widget,
					       GtkWidget  *dest_widget,
					       gint        src_x,
					       gint        src_y,
					       gint       *dest_x,
					       gint       *dest_y);

627
628
/* Hide widget and return TRUE.
 */
629
gboolean     gtk_widget_hide_on_delete	(GtkWidget	*widget);
630

631
632
633
634
635
636
637
/* Widget styles.
 */
void	   gtk_widget_set_style		(GtkWidget	*widget,
					 GtkStyle	*style);
void	   gtk_widget_ensure_style	(GtkWidget	*widget);
GtkStyle*  gtk_widget_get_style		(GtkWidget	*widget);

638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
void        gtk_widget_modify_style       (GtkWidget            *widget,
					   GtkRcStyle           *style);
GtkRcStyle *gtk_widget_get_modifier_style (GtkWidget            *widget);
void        gtk_widget_modify_fg          (GtkWidget            *widget,
					   GtkStateType          state,
					   GdkColor             *color);
void        gtk_widget_modify_bg          (GtkWidget            *widget,
					   GtkStateType          state,
					   GdkColor             *color);
void        gtk_widget_modify_text        (GtkWidget            *widget,
					   GtkStateType          state,
					   GdkColor             *color);
void        gtk_widget_modify_base        (GtkWidget            *widget,
					   GtkStateType          state,
					   GdkColor             *color);
void        gtk_widget_modify_font        (GtkWidget            *widget,
					   PangoFontDescription *font_desc);
655

656
657
658
659
660
#ifndef GTK_DISABLE_DEPRECATED
#define gtk_widget_set_rc_style(widget)          (gtk_widget_set_style (widget, NULL))
#define gtk_widget_restore_default_style(widget) (gtk_widget_set_style (widget, NULL))
#endif

661
662
663
664
PangoContext *gtk_widget_create_pango_context (GtkWidget   *widget);
PangoContext *gtk_widget_get_pango_context    (GtkWidget   *widget);
PangoLayout  *gtk_widget_create_pango_layout  (GtkWidget   *widget,
					       const gchar *text);
665

666
667
GdkPixbuf    *gtk_widget_render_icon          (GtkWidget   *widget,
                                               const gchar *stock_id,
668
                                               GtkIconSize  size,
669
                                               const gchar *detail);
670

671
672
673
674
/* handle composite names for GTK_COMPOSITE_CHILD widgets,
 * the returned name is newly allocated.
 */
void   gtk_widget_set_composite_name	(GtkWidget	*widget,
Owen Taylor's avatar
Owen Taylor committed
675
					 const gchar   	*name);
676
677
gchar* gtk_widget_get_composite_name	(GtkWidget	*widget);
     
678
679
680
/* Descend recursively and set rc-style on all widgets without user styles */
void       gtk_widget_reset_rc_styles   (GtkWidget      *widget);

681
682
683
684
/* Push/pop pairs, to change default values upon a widget's creation.
 * This will override the values that got set by the
 * gtk_widget_set_default_* () functions.
 */
685
686
687
688
void	     gtk_widget_push_colormap	     (GdkColormap *cmap);
void	     gtk_widget_push_composite_child (void);
void	     gtk_widget_pop_composite_child  (void);
void	     gtk_widget_pop_colormap	     (void);
Elliot Lee's avatar
Elliot Lee committed
689

690
691
/* widget style properties
 */
Tim Janik's avatar
Tim Janik committed
692
void gtk_widget_class_install_style_property        (GtkWidgetClass     *klass,
693
						     GParamSpec         *pspec);
Tim Janik's avatar
Tim Janik committed
694
void gtk_widget_class_install_style_property_parser (GtkWidgetClass     *klass,
695
696
						     GParamSpec         *pspec,
						     GtkRcPropertyParser parser);
697
698
699
700
GParamSpec*  gtk_widget_class_find_style_property   (GtkWidgetClass     *klass,
						     const gchar        *property_name);
GParamSpec** gtk_widget_class_list_style_properties (GtkWidgetClass     *klass,
						     guint              *n_properties);
701
702
703
704
705
706
707
708
709
710
711
void gtk_widget_style_get_property (GtkWidget	     *widget,
				    const gchar    *property_name,
				    GValue	     *value);
void gtk_widget_style_get_valist   (GtkWidget	     *widget,
				    const gchar    *first_property_name,
				    va_list         var_args);
void gtk_widget_style_get          (GtkWidget	     *widget,
				    const gchar    *first_property_name,
				    ...);


712
713
/* Set certain default values to be used at widget creation time.
 */
714
void	     gtk_widget_set_default_colormap (GdkColormap *colormap);
715
GtkStyle*    gtk_widget_get_default_style    (void);
716
#ifndef GDK_MULTIHEAD_SAFE
Elliot Lee's avatar
Elliot Lee committed
717
718
GdkColormap* gtk_widget_get_default_colormap (void);
GdkVisual*   gtk_widget_get_default_visual   (void);
719
#endif
Elliot Lee's avatar
Elliot Lee committed
720

721
722
723
724
725
726
727
728
729
730
/* Functions for setting directionality for widgets
 */

void             gtk_widget_set_direction         (GtkWidget        *widget,
						   GtkTextDirection  dir);
GtkTextDirection gtk_widget_get_direction         (GtkWidget        *widget);

void             gtk_widget_set_default_direction (GtkTextDirection  dir);
GtkTextDirection gtk_widget_get_default_direction (void);

731
/* Counterpart to gdk_window_shape_combine_mask.
Elliot Lee's avatar
Elliot Lee committed
732
 */
733
void	     gtk_widget_shape_combine_mask (GtkWidget *widget,
Elliot Lee's avatar
Elliot Lee committed
734
735
736
737
					    GdkBitmap *shape_mask,
					    gint       offset_x,
					    gint       offset_y);

738
739
740
/* internal function */
void	     gtk_widget_reset_shapes	   (GtkWidget *widget);

Tim Janik's avatar
Tim Janik committed
741
742
743
744
745
746
747
748
749
750
751
752
/* Compute a widget's path in the form "GtkWindow.MyLabel", and
 * return newly alocated strings.
 */
void	     gtk_widget_path		   (GtkWidget *widget,
					    guint     *path_length,
					    gchar    **path,
					    gchar    **path_reversed);
void	     gtk_widget_class_path	   (GtkWidget *widget,
					    guint     *path_length,
					    gchar    **path,
					    gchar    **path_reversed);

753
754
755
GType           gtk_requisition_get_type (void);
GtkRequisition *gtk_requisition_copy     (const GtkRequisition *requisition);
void            gtk_requisition_free     (GtkRequisition       *requisition);
756

757
#if	defined (GTK_TRACE_OBJECTS) && defined (__GNUC__)
758
759
760
761
#  define gtk_widget_ref gtk_object_ref
#  define gtk_widget_unref gtk_object_unref
#endif	/* GTK_TRACE_OBJECTS && __GNUC__ */

762
763
764
765
GtkWidgetAuxInfo *_gtk_widget_get_aux_info                (GtkWidget    *widget,
							   gboolean      create);
void              _gtk_widget_propagate_hierarchy_changed (GtkWidget    *widget,
							   GtkWidget    *previous_toplevel);
Owen Taylor's avatar
Owen Taylor committed
766
767
void              _gtk_widget_propagate_screen_changed    (GtkWidget    *widget,
							   GdkScreen    *previous_screen);
768

769
770
GdkColormap* _gtk_widget_peek_colormap (void);

771

Elliot Lee's avatar
Elliot Lee committed
772
773
774
775
776
777
#ifdef __cplusplus
}
#endif /* __cplusplus */


#endif /* __GTK_WIDGET_H__ */