gtkwidget.h 48.5 KB
Newer Older
Cody Russell's avatar
Cody Russell committed
1
/* GTK - The GIMP Toolkit
Elliot Lee's avatar
Elliot Lee committed
2 3 4
 * 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
 * file for a list of people on the GTK+ Team.  See the ChangeLog
 * files for a list of changes.  These files are distributed with
24
 * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
25 26
 */

27 28 29 30
#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif

Elliot Lee's avatar
Elliot Lee committed
31 32 33 34
#ifndef __GTK_WIDGET_H__
#define __GTK_WIDGET_H__

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

Matthias Clasen's avatar
Matthias Clasen committed
42
G_BEGIN_DECLS
43

44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
/**
 * GtkWidgetFlags:
 * @GTK_TOPLEVEL: widgets without a real parent, as there are #GtkWindow<!-- -->s and
 *  #GtkMenu<!-- -->s have this flag set throughout their lifetime.
 *  Toplevel widgets always contain their own #GdkWindow.
 * @GTK_NO_WINDOW: Indicative for a widget that does not provide its own #GdkWindow.
 *  Visible action (e.g. drawing) is performed on the parent's #GdkWindow.
 * @GTK_REALIZED: Set by gtk_widget_realize(), unset by gtk_widget_unrealize().
 *  A realized widget has an associated #GdkWindow.
 * @GTK_MAPPED: Set by gtk_widget_map(), unset by gtk_widget_unmap().
 *  Only realized widgets can be mapped. It means that gdk_window_show()
 *  has been called on the widgets window(s).
 * @GTK_VISIBLE: Set by gtk_widget_show(), unset by gtk_widget_hide(). Implies that a
 *  widget will be mapped as soon as its parent is mapped.
 * @GTK_SENSITIVE: Set and unset by gtk_widget_set_sensitive().
 *  The sensitivity of a widget determines whether it will receive
 *  certain events (e.g. button or key presses). One premise for
 *  the widget's sensitivity is to have this flag set.
 * @GTK_PARENT_SENSITIVE: Set and unset by gtk_widget_set_sensitive() operations on the
 *  parents of the widget.
 *  This is the second premise for the widget's sensitivity. Once
 *  it has %GTK_SENSITIVE and %GTK_PARENT_SENSITIVE set, its state is
 *  effectively sensitive. This is expressed (and can be examined) by
 *  the #GTK_WIDGET_IS_SENSITIVE macro.
 * @GTK_CAN_FOCUS: Determines whether a widget is able to handle focus grabs.
 * @GTK_HAS_FOCUS: Set by gtk_widget_grab_focus() for widgets that also
 *  have %GTK_CAN_FOCUS set. The flag will be unset once another widget
 *  grabs the focus.
 * @GTK_CAN_DEFAULT: The widget is allowed to receive the default action via
 *  gtk_widget_grab_default() and will reserve space to draw the default if possible
 * @GTK_HAS_DEFAULT: The widget currently is receiving the default action and
 *  should be drawn appropriately if possible
 * @GTK_HAS_GRAB: Set by gtk_grab_add(), unset by gtk_grab_remove(). It means that the
 *  widget is in the grab_widgets stack, and will be the preferred one for
 *  receiving events other than ones of cosmetic value.
 * @GTK_RC_STYLE: Indicates that the widget's style has been looked up through the rc
 *  mechanism. It does not imply that the widget actually had a style
 *  defined through the rc mechanism.
 * @GTK_COMPOSITE_CHILD: Indicates that the widget is a composite child of its parent; see
 *  gtk_widget_push_composite_child(), gtk_widget_pop_composite_child().
 * @GTK_NO_REPARENT: Unused since before GTK+ 1.2, will be removed in a future version.
 * @GTK_APP_PAINTABLE: Set and unset by gtk_widget_set_app_paintable().
 *  Must be set on widgets whose window the application directly draws on,
 *  in order to keep GTK+ from overwriting the drawn stuff.  See
 *  <xref linkend="app-paintable-widgets"/> for a detailed
 *  description of this flag.
 * @GTK_RECEIVES_DEFAULT: The widget when focused will receive the default action and have
 *  %GTK_HAS_DEFAULT set even if there is a different widget set as default.
 * @GTK_DOUBLE_BUFFERED: Set and unset by gtk_widget_set_double_buffered().
 *  Indicates that exposes done on the widget should be
 *  double-buffered.  See <xref linkend="double-buffering"/> for a
 *  detailed discussion of how double-buffering works in GTK+ and
 *  why you may want to disable it for special cases.
 * @GTK_NO_SHOW_ALL:
 *
 * Tells about certain properties of the widget.
Elliot Lee's avatar
Elliot Lee committed
100
 */
Tim Janik's avatar
Tim Janik committed
101
typedef enum
Elliot Lee's avatar
Elliot Lee committed
102
{
103 104 105 106 107 108 109 110 111 112 113 114 115
  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,
  GTK_CAN_DEFAULT      = 1 << 13,
  GTK_HAS_DEFAULT      = 1 << 14,
  GTK_HAS_GRAB	       = 1 << 15,
  GTK_RC_STYLE	       = 1 << 16,
116
  GTK_COMPOSITE_CHILD  = 1 << 17,
Owen Taylor's avatar
Owen Taylor committed
117
  GTK_NO_REPARENT      = 1 << 18,
118
  GTK_APP_PAINTABLE    = 1 << 19,
119
  GTK_RECEIVES_DEFAULT = 1 << 20,
120 121
  GTK_DOUBLE_BUFFERED  = 1 << 21,
  GTK_NO_SHOW_ALL      = 1 << 22
122
} GtkWidgetFlags;
Elliot Lee's avatar
Elliot Lee committed
123

124 125 126 127 128 129 130
/* Kinds of widget-specific help */
typedef enum
{
  GTK_WIDGET_HELP_TOOLTIP,
  GTK_WIDGET_HELP_WHATS_THIS
} GtkWidgetHelpType;

131 132
/* 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
133
 */
134
#define GTK_TYPE_WIDGET			  (gtk_widget_get_type ())
Manish Singh's avatar
Manish Singh committed
135 136 137 138 139
#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
140

141
/* Macros for extracting various fields from GtkWidget and GtkWidgetClass.
Elliot Lee's avatar
Elliot Lee committed
142
 */
143
#ifndef GTK_DISABLE_DEPRECATED
144 145 146 147 148
/**
 * GTK_WIDGET_TYPE:
 * @wid: a #GtkWidget.
 *
 * Gets the type of a widget.
149 150
 *
 * Deprecated: 2.20: Use G_OBJECT_TYPE() instead.
151
 */
152
#define GTK_WIDGET_TYPE(wid)		  (GTK_OBJECT_TYPE (wid))
153
#endif
154 155 156 157 158 159

/**
 * GTK_WIDGET_STATE:
 * @wid: a #GtkWidget.
 *
 * Returns the current state of the widget, as a #GtkStateType.
160 161
 *
 * Deprecated: 2.20: Use gtk_widget_get_state() instead.
162
 */
163
#define GTK_WIDGET_STATE(wid)		  (GTK_WIDGET (wid)->state)
164
/* FIXME: Deprecating GTK_WIDGET_STATE requires fixing GTK internals. */
165

166
#ifndef GTK_DISABLE_DEPRECATED
167 168 169 170 171 172 173 174 175
/**
 * GTK_WIDGET_SAVED_STATE:
 * @wid: a #GtkWidget.
 *
 * Returns the saved state of the widget, as a #GtkStateType.
 *
 * The saved state will be restored when a widget gets sensitive
 * again, after it has been made insensitive with gtk_widget_set_state()
 * or gtk_widget_set_sensitive().
176 177
 *
 * Deprecated: 2.20: Do not used it.
178
 */
179
#define GTK_WIDGET_SAVED_STATE(wid)	  (GTK_WIDGET (wid)->saved_state)
180
#endif
Elliot Lee's avatar
Elliot Lee committed
181

182

183 184
/* Macros for extracting the widget flags from GtkWidget.
 */
185 186 187 188 189
/**
 * GTK_WIDGET_FLAGS:
 * @wid: a #GtkWidget.
 *
 * Returns the widget flags from @wid.
190 191
 *
 * Deprecated: 2.20: Do not use it.
192
 */
193
#define GTK_WIDGET_FLAGS(wid)		  (GTK_OBJECT_FLAGS (wid))
194
/* FIXME: Deprecating GTK_WIDGET_FLAGS requires fixing GTK internals. */
195

196
#ifndef GTK_DISABLE_DEPRECATED
197 198 199 200 201
/**
 * GTK_WIDGET_TOPLEVEL:
 * @wid: a #GtkWidget.
 *
 * Evaluates to %TRUE if the widget is a toplevel widget.
202 203
 *
 * Deprecated: 2.20: Use gtk_widget_is_toplevel() instead.
204
 */
205
#define GTK_WIDGET_TOPLEVEL(wid)	  ((GTK_WIDGET_FLAGS (wid) & GTK_TOPLEVEL) != 0)
206
#endif
207

208
#ifndef GTK_DISABLE_DEPRECATED
209 210 211 212 213
/**
 * GTK_WIDGET_NO_WINDOW:
 * @wid: a #GtkWidget.
 *
 * Evaluates to %TRUE if the widget doesn't have an own #GdkWindow.
214 215
 *
 * Deprecated: 2.20: Use gtk_widget_get_has_window() instead.
216
 */
217
#define GTK_WIDGET_NO_WINDOW(wid)	  ((GTK_WIDGET_FLAGS (wid) & GTK_NO_WINDOW) != 0)
218
#endif
219 220 221 222 223 224 225

/**
 * GTK_WIDGET_REALIZED:
 * @wid: a #GtkWidget.
 *
 * Evaluates to %TRUE if the widget is realized.
 */
226
#define GTK_WIDGET_REALIZED(wid)	  ((GTK_WIDGET_FLAGS (wid) & GTK_REALIZED) != 0)
227 228 229 230 231 232 233

/**
 * GTK_WIDGET_MAPPED:
 * @wid: a #GtkWidget.
 *
 * Evaluates to %TRUE if the widget is mapped.
 */
234
#define GTK_WIDGET_MAPPED(wid)		  ((GTK_WIDGET_FLAGS (wid) & GTK_MAPPED) != 0)
235

236
#ifndef GTK_DISABLE_DEPRECATED
237 238 239 240 241
/**
 * GTK_WIDGET_VISIBLE:
 * @wid: a #GtkWidget.
 *
 * Evaluates to %TRUE if the widget is visible.
242 243
 *
 * Deprecated: 2.20: Use gtk_widget_get_visible() instead.
244
 */
245
#define GTK_WIDGET_VISIBLE(wid)		  ((GTK_WIDGET_FLAGS (wid) & GTK_VISIBLE) != 0)
246
#endif
247

248
#ifndef GTK_DISABLE_DEPRECATED
249 250 251 252 253
/**
 * GTK_WIDGET_DRAWABLE:
 * @wid: a #GtkWidget.
 *
 * Evaluates to %TRUE if the widget is mapped and visible.
254 255
 *
 * Deprecated: 2.20: Use gtk_widget_is_drawable() instead.
256
 */
257
#define GTK_WIDGET_DRAWABLE(wid)	  (GTK_WIDGET_VISIBLE (wid) && GTK_WIDGET_MAPPED (wid))
258
#endif
259

260
#ifndef GTK_DISABLE_DEPRECATED
261 262 263 264 265 266
/**
 * GTK_WIDGET_SENSITIVE:
 * @wid: a #GtkWidget.
 *
 * Evaluates to %TRUE if the #GTK_SENSITIVE flag has be set on the widget.
 */
267
#define GTK_WIDGET_SENSITIVE(wid)	  ((GTK_WIDGET_FLAGS (wid) & GTK_SENSITIVE) != 0)
268
#endif
269

270
#ifndef GTK_DISABLE_DEPRECATED
271 272 273 274 275
/**
 * GTK_WIDGET_PARENT_SENSITIVE:
 * @wid: a #GtkWidget.
 *
 * Evaluates to %TRUE if the #GTK_PARENT_SENSITIVE flag has be set on the widget.
276 277
 *
 * Deprecated: 2.20: Use gtk_widget_get_sensitive() on the parent widget instead.
278
 */
279
#define GTK_WIDGET_PARENT_SENSITIVE(wid)  ((GTK_WIDGET_FLAGS (wid) & GTK_PARENT_SENSITIVE) != 0)
280
#endif
281

282
#ifndef GTK_DISABLE_DEPRECATED
283 284 285 286 287
/**
 * GTK_WIDGET_IS_SENSITIVE:
 * @wid: a #GtkWidget.
 *
 * Evaluates to %TRUE if the widget is effectively sensitive.
288 289
 *
 * Deprecated: 2.20: Use gtk_widget_is_sensitive() instead.
290
 */
291 292
#define GTK_WIDGET_IS_SENSITIVE(wid)	  (GTK_WIDGET_SENSITIVE (wid) && \
					   GTK_WIDGET_PARENT_SENSITIVE (wid))
293
#endif
294 295

#ifndef GTK_DISABLE_DEPRECATED
296 297 298 299 300
/**
 * GTK_WIDGET_CAN_FOCUS:
 * @wid: a #GtkWidget.
 *
 * Evaluates to %TRUE if the widget is able to handle focus grabs.
301 302
 *
 * Deprecated: 2.20: Use gtk_widget_get_can_focus() instead.
303
 */
304
#define GTK_WIDGET_CAN_FOCUS(wid)	  ((GTK_WIDGET_FLAGS (wid) & GTK_CAN_FOCUS) != 0)
305
#endif
306

307
#ifndef GTK_DISABLE_DEPRECATED
308 309 310 311 312 313
/**
 * GTK_WIDGET_HAS_FOCUS:
 * @wid: a #GtkWidget.
 *
 * Evaluates to %TRUE if the widget has grabbed the focus and no other
 * widget has done so more recently.
314 315
 *
 * Deprecated: 2.20: Use gtk_widget_has_focus() instead.
316
 */
317
#define GTK_WIDGET_HAS_FOCUS(wid)	  ((GTK_WIDGET_FLAGS (wid) & GTK_HAS_FOCUS) != 0)
318
#endif
319

Javier Jardón's avatar
Javier Jardón committed
320
#ifndef GTK_DISABLE_DEPRECATED
321 322 323 324 325 326
/**
 * GTK_WIDGET_CAN_DEFAULT:
 * @wid: a #GtkWidget.
 *
 * Evaluates to %TRUE if the widget is allowed to receive the default action
 * via gtk_widget_grab_default().
Javier Jardón's avatar
Javier Jardón committed
327 328
 *
 * Deprecated: 2.20: Use gtk_widget_get_can_default() instead.
329
 */
330
#define GTK_WIDGET_CAN_DEFAULT(wid)	  ((GTK_WIDGET_FLAGS (wid) & GTK_CAN_DEFAULT) != 0)
Javier Jardón's avatar
Javier Jardón committed
331
#endif
332

Javier Jardón's avatar
Javier Jardón committed
333
#ifndef GTK_DISABLE_DEPRECATED
334 335 336 337 338
/**
 * GTK_WIDGET_HAS_DEFAULT:
 * @wid: a #GtkWidget.
 *
 * Evaluates to %TRUE if the widget currently is receiving the default action.
Javier Jardón's avatar
Javier Jardón committed
339 340
 *
 * Deprecated: 2.20: Use gtk_widget_has_default() instead.
341
 */
342
#define GTK_WIDGET_HAS_DEFAULT(wid)	  ((GTK_WIDGET_FLAGS (wid) & GTK_HAS_DEFAULT) != 0)
Javier Jardón's avatar
Javier Jardón committed
343
#endif
344

Javier Jardón's avatar
Javier Jardón committed
345
#ifndef GTK_DISABLE_DEPRECATED
346 347 348 349 350 351
/**
 * GTK_WIDGET_HAS_GRAB:
 * @wid: a #GtkWidget.
 *
 * Evaluates to %TRUE if the widget is in the grab_widgets stack, and will be
 * the preferred one for receiving events other than ones of cosmetic value.
Javier Jardón's avatar
Javier Jardón committed
352 353
 *
 * Deprecated: 2.20: Use gtk_widget_has_grab() instead.
354
 */
355
#define GTK_WIDGET_HAS_GRAB(wid)	  ((GTK_WIDGET_FLAGS (wid) & GTK_HAS_GRAB) != 0)
Javier Jardón's avatar
Javier Jardón committed
356
#endif
357

358
#ifndef GTK_DISABLE_DEPRECATED
359 360 361 362 363 364
/**
 * GTK_WIDGET_RC_STYLE:
 * @wid: a #GtkWidget.
 *
 * Evaluates to %TRUE if the widget's style has been looked up through the rc
 * mechanism.
365 366
 *
 * Deprecated: 2.20: Use gtk_widget_has_rc_style() instead.
367
 */
368
#define GTK_WIDGET_RC_STYLE(wid)	  ((GTK_WIDGET_FLAGS (wid) & GTK_RC_STYLE) != 0)
369 370
#endif

371
#ifndef GTK_DISABLE_DEPRECATED
372 373 374 375 376
/**
 * GTK_WIDGET_COMPOSITE_CHILD:
 * @wid: a #GtkWidget.
 *
 * Evaluates to %TRUE if the widget is a composite child of its parent.
377
 *
378
 * Deprecated: 2.20: Use the #GtkWidget:composite-child property instead.
379
 */
380
#define GTK_WIDGET_COMPOSITE_CHILD(wid)	  ((GTK_WIDGET_FLAGS (wid) & GTK_COMPOSITE_CHILD) != 0)
381
#endif
382

Javier Jardón's avatar
Javier Jardón committed
383
#ifndef GTK_DISABLE_DEPRECATED
384 385 386 387 388
/**
 * GTK_WIDGET_APP_PAINTABLE:
 * @wid: a #GtkWidget.
 *
 * Evaluates to %TRUE if the #GTK_APP_PAINTABLE flag has been set on the widget.
Javier Jardón's avatar
Javier Jardón committed
389 390
 *
 * Deprecated: 2.20: Use gtk_widget_get_app_paintable() instead.
391
 */
392
#define GTK_WIDGET_APP_PAINTABLE(wid)	  ((GTK_WIDGET_FLAGS (wid) & GTK_APP_PAINTABLE) != 0)
Javier Jardón's avatar
Javier Jardón committed
393
#endif
394

Javier Jardón's avatar
Javier Jardón committed
395
#ifndef GTK_DISABLE_DEPRECATED
396 397 398 399 400 401
/**
 * GTK_WIDGET_RECEIVES_DEFAULT:
 * @wid: a #GtkWidget.
 *
 * Evaluates to %TRUE if the widget when focused will receive the default action
 * even if there is a different widget set as default.
Javier Jardón's avatar
Javier Jardón committed
402 403
 *
 * Deprecated: 2.20: Use gtk_widget_get_receives_default() instead.
404
 */
405
#define GTK_WIDGET_RECEIVES_DEFAULT(wid)  ((GTK_WIDGET_FLAGS (wid) & GTK_RECEIVES_DEFAULT) != 0)
Javier Jardón's avatar
Javier Jardón committed
406
#endif
407

Javier Jardón's avatar
Javier Jardón committed
408
#ifndef GTK_DISABLE_DEPRECATED
409 410 411 412 413
/**
 * GTK_WIDGET_DOUBLE_BUFFERED:
 * @wid: a #GtkWidget.
 *
 * Evaluates to %TRUE if the #GTK_DOUBLE_BUFFERED flag has been set on the widget.
Javier Jardón's avatar
Javier Jardón committed
414 415
 *
 * Deprecated: 2.20: Use gtk_widget_get_double_buffered() instead.
416
 */
417
#define GTK_WIDGET_DOUBLE_BUFFERED(wid)	  ((GTK_WIDGET_FLAGS (wid) & GTK_DOUBLE_BUFFERED) != 0)
Javier Jardón's avatar
Javier Jardón committed
418
#endif
419 420


421
/* Macros for setting and clearing widget flags.
Elliot Lee's avatar
Elliot Lee committed
422
 */
423 424 425 426 427 428 429
/**
 * GTK_WIDGET_SET_FLAGS:
 * @wid: a #GtkWidget.
 * @flag: the flags to set.
 *
 * Turns on certain widget flags.
 */
430
#define GTK_WIDGET_SET_FLAGS(wid,flag)	  G_STMT_START{ (GTK_WIDGET_FLAGS (wid) |= (flag)); }G_STMT_END
431 432 433 434 435 436 437 438

/**
 * GTK_WIDGET_UNSET_FLAGS:
 * @wid: a #GtkWidget.
 * @flag: the flags to unset.
 *
 * Turns off certain widget flags.
 */
439
#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
440

441
#define GTK_TYPE_REQUISITION              (gtk_requisition_get_type ())
442 443 444 445 446 447 448 449

/* forward declaration to avoid excessive includes (and concurrent includes)
 */
typedef struct _GtkRequisition	   GtkRequisition;
typedef struct _GtkSelectionData   GtkSelectionData;
typedef struct _GtkWidgetClass	   GtkWidgetClass;
typedef struct _GtkWidgetAuxInfo   GtkWidgetAuxInfo;
typedef struct _GtkWidgetShapeInfo GtkWidgetShapeInfo;
450
typedef struct _GtkClipboard	   GtkClipboard;
Kristian Rietveld's avatar
Kristian Rietveld committed
451 452
typedef struct _GtkTooltip         GtkTooltip;
typedef struct _GtkWindow          GtkWindow;
Elliot Lee's avatar
Elliot Lee committed
453

454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484
/**
 * GtkAllocation:
 * @x: the X position of the widget's area relative to its parents allocation.
 * @y: the Y position of the widget's area relative to its parents allocation.
 * @width: the width of the widget's allocated area.
 * @height: the height of the widget's allocated area.
 *
 * A <structname>GtkAllocation</structname> of a widget represents region which has been allocated to the
 * widget by its parent. It is a subregion of its parents allocation. See
 * <xref linkend="size-allocation"/> for more information.
 */
typedef 	GdkRectangle	   GtkAllocation;

/**
 * GtkCallback:
 * @widget: the widget to operate on
 * @data: user-supplied data
 *
 * The type of the callback functions used for e.g. iterating over
 * the children of a container, see gtk_container_foreach().
 */
typedef void    (*GtkCallback)     (GtkWidget        *widget,
				    gpointer          data);

/**
 * GtkRequisition:
 * @width: the widget's desired width
 * @height: the widget's desired height
 *
 * A <structname>GtkRequisition</structname> represents the desired size of a widget. See
 * <xref linkend="size-requisition"/> for more information.
Elliot Lee's avatar
Elliot Lee committed
485 486 487
 */
struct _GtkRequisition
{
488 489
  gint width;
  gint height;
Elliot Lee's avatar
Elliot Lee committed
490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505
};

/* 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;
506
  
507 508 509 510 511
  /* 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.
   */
Tim Janik's avatar
Tim Janik committed
512
  guint16 GSEAL (private_flags);
513
  
Elliot Lee's avatar
Elliot Lee committed
514 515 516
  /* The state of the widget. There are actually only
   *  5 widget states (defined in "gtkenums.h").
   */
Tim Janik's avatar
Tim Janik committed
517
  guint8 GSEAL (state);
518
  
519
  /* The saved state of the widget. When a widget's state
520 521 522 523
   *  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
524
   */
Tim Janik's avatar
Tim Janik committed
525
  guint8 GSEAL (saved_state);
526
  
527
  /* The widget's name. If the widget does not have a name
Elliot Lee's avatar
Elliot Lee committed
528
   *  (the name is NULL), then its name (as returned by
529
   *  "gtk_widget_get_name") is its class's name.
530 531
   * Among other things, the widget name is used to determine
   *  the style to use for a widget.
Elliot Lee's avatar
Elliot Lee committed
532
   */
Tim Janik's avatar
Tim Janik committed
533
  gchar *GSEAL (name);
534
  
535 536
  /*< public >*/

Elliot Lee's avatar
Elliot Lee committed
537 538 539 540 541
  /* 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.
   */
Tim Janik's avatar
Tim Janik committed
542
  GtkStyle *GSEAL (style);
543
  
544
  /* The widget's desired size.
Elliot Lee's avatar
Elliot Lee committed
545
   */
Tim Janik's avatar
Tim Janik committed
546
  GtkRequisition GSEAL (requisition);
547
  
548
  /* The widget's allocated size.
Elliot Lee's avatar
Elliot Lee committed
549
   */
Tim Janik's avatar
Tim Janik committed
550
  GtkAllocation GSEAL (allocation);
551
  
552
  /* The widget's window or its parent window if it does
Elliot Lee's avatar
Elliot Lee committed
553 554 555
   *  not have a window. (Which will be indicated by the
   *  GTK_NO_WINDOW flag being set).
   */
Tim Janik's avatar
Tim Janik committed
556
  GdkWindow *GSEAL (window);
557
  
558
  /* The widget's parent.
Elliot Lee's avatar
Elliot Lee committed
559
   */
Tim Janik's avatar
Tim Janik committed
560
  GtkWidget *GSEAL (parent);
Elliot Lee's avatar
Elliot Lee committed
561 562
};

563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580
/**
 * GtkWidgetClass:
 * @parent_class:
 * @activate_signal:
 * @set_scroll_adjustments_signal:
 *
 * <structfield>activate_signal</structfield>
 * The signal to emit when a widget of this class is activated,
 * gtk_widget_activate() handles the emission. Implementation of this
 * signal is optional.
 *
 *
 * <structfield>set_scroll_adjustment_signal</structfield>
 * This signal is emitted  when a widget of this class is added
 * to a scrolling aware parent, gtk_widget_set_scroll_adjustments()
 * handles the emission.
 * Implementation of this signal is optional.
 */
Elliot Lee's avatar
Elliot Lee committed
581 582 583 584 585 586 587 588 589
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
590 591

  /*< public >*/
592
  
593
  guint activate_signal;
594

595
  guint set_scroll_adjustments_signal;
596

Soren Sandmann's avatar
Soren Sandmann committed
597 598
  /*< private >*/
  
Tim Janik's avatar
Tim Janik committed
599 600 601 602 603
  /* seldomly overidden */
  void (*dispatch_child_properties_changed) (GtkWidget   *widget,
					     guint        n_pspecs,
					     GParamSpec **pspecs);

Elliot Lee's avatar
Elliot Lee committed
604
  /* basics */
605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620
  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);
621 622
  void (* hierarchy_changed)   (GtkWidget        *widget,
				GtkWidget        *previous_toplevel);
623 624 625 626
  void (* style_set)	       (GtkWidget        *widget,
				GtkStyle         *previous_style);
  void (* direction_changed)   (GtkWidget        *widget,
				GtkTextDirection  previous_direction);
627 628
  void (* grab_notify)         (GtkWidget        *widget,
				gboolean          was_grabbed);
Tim Janik's avatar
Tim Janik committed
629 630
  void (* child_notify)        (GtkWidget	 *widget,
				GParamSpec       *pspec);
631
  
632
  /* Mnemonics */
633
  gboolean (* mnemonic_activate) (GtkWidget    *widget,
634 635
				  gboolean      group_cycling);
  
636
  /* explicit focus */
Tim Janik's avatar
Tim Janik committed
637
  void     (* grab_focus)      (GtkWidget        *widget);
638 639
  gboolean (* focus)           (GtkWidget        *widget,
                                GtkDirectionType  direction);
640
  
Elliot Lee's avatar
Elliot Lee committed
641
  /* events */
642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695
  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);
696
  
Elliot Lee's avatar
Elliot Lee committed
697
  /* selection */
698 699 700
  void (* selection_get)           (GtkWidget          *widget,
				    GtkSelectionData   *selection_data,
				    guint               info,
701
				    guint               time_);
702
  void (* selection_received)      (GtkWidget          *widget,
703
				    GtkSelectionData   *selection_data,
704
				    guint               time_);
705 706 707 708 709 710 711 712 713 714

  /* 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,
715
				    guint               time_);
716 717 718 719 720 721
  void (* drag_data_delete)        (GtkWidget	       *widget,
				    GdkDragContext     *context);

  /* Target side drag signals */
  void (* drag_leave)	           (GtkWidget	       *widget,
				    GdkDragContext     *context,
722
				    guint               time_);
723 724 725 726
  gboolean (* drag_motion)         (GtkWidget	       *widget,
				    GdkDragContext     *context,
				    gint                x,
				    gint                y,
727
				    guint               time_);
728 729 730 731
  gboolean (* drag_drop)           (GtkWidget	       *widget,
				    GdkDragContext     *context,
				    gint                x,
				    gint                y,
732
				    guint               time_);
733 734
  void (* drag_data_received)      (GtkWidget          *widget,
				    GdkDragContext     *context,
735 736
				    gint                x,
				    gint                y,
737 738
				    GtkSelectionData   *selection_data,
				    guint               info,
739
				    guint               time_);
Owen Taylor's avatar
Owen Taylor committed
740 741

  /* Signals used only for keybindings */
742
  gboolean (* popup_menu)          (GtkWidget          *widget);
743 744 745 746 747 748

  /* 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.
   */
749
  gboolean (* show_help)           (GtkWidget          *widget,
750
                                    GtkWidgetHelpType   help_type);
751 752 753
  
  /* accessibility support 
   */
754 755 756 757 758 759
  AtkObject*   (*get_accessible)     (GtkWidget *widget);

  void         (*screen_changed)     (GtkWidget *widget,
                                      GdkScreen *previous_screen);
  gboolean     (*can_activate_accel) (GtkWidget *widget,
                                      guint      signal_id);
760

761 762 763 764
  /* Sent when a grab is broken. */
  gboolean (*grab_broken_event) (GtkWidget	     *widget,
                                 GdkEventGrabBroken  *event);

Søren Sandmann's avatar
Søren Sandmann committed
765
  void         (* composited_changed) (GtkWidget *widget);
766

Kristian Rietveld's avatar
Kristian Rietveld committed
767 768 769 770 771
  gboolean     (* query_tooltip)      (GtkWidget  *widget,
				       gint        x,
				       gint        y,
				       gboolean    keyboard_tooltip,
				       GtkTooltip *tooltip);
772 773 774 775
  /* Signals without a C default handler class slot:
   * gboolean	(*damage_event)	(GtkWidget      *widget,
   *                             GdkEventExpose *event);
   */
Kristian Rietveld's avatar
Kristian Rietveld committed
776

Owen Taylor's avatar
Owen Taylor committed
777
  /* Padding for future expansion */
778 779 780
  void (*_gtk_reserved5) (void);
  void (*_gtk_reserved6) (void);
  void (*_gtk_reserved7) (void);
Elliot Lee's avatar
Elliot Lee committed
781 782 783 784
};

struct _GtkWidgetAuxInfo
{
785 786 787 788
  gint x;
  gint y;
  gint width;
  gint height;
789

790 791
  guint x_set : 1;
  guint y_set : 1;
792 793

  GtkRequisition natural_size;
Elliot Lee's avatar
Elliot Lee committed
794 795 796 797 798 799 800 801 802
};

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

Manish Singh's avatar
Manish Singh committed
803 804
GType	   gtk_widget_get_type		  (void) G_GNUC_CONST;
GtkWidget* gtk_widget_new		  (GType		type,
805
					   const gchar	       *first_property_name,
806
					   ...);
807 808 809
void	   gtk_widget_destroy		  (GtkWidget	       *widget);
void	   gtk_widget_destroyed		  (GtkWidget	       *widget,
					   GtkWidget	      **widget_pointer);
Owen Taylor's avatar
Owen Taylor committed
810
#ifndef GTK_DISABLE_DEPRECATED
811 812
GtkWidget* gtk_widget_ref		  (GtkWidget	       *widget);
void	   gtk_widget_unref		  (GtkWidget	       *widget);
813
void	   gtk_widget_set		  (GtkWidget	       *widget,
814
					   const gchar         *first_property_name,
815
					   ...) G_GNUC_NULL_TERMINATED;
Owen Taylor's avatar
Owen Taylor committed
816
#endif /* GTK_DISABLE_DEPRECATED */
817 818
void	   gtk_widget_unparent		  (GtkWidget	       *widget);
void	   gtk_widget_show		  (GtkWidget	       *widget);
819
void       gtk_widget_show_now            (GtkWidget           *widget);
820 821 822
void	   gtk_widget_hide		  (GtkWidget	       *widget);
void	   gtk_widget_show_all		  (GtkWidget	       *widget);
void	   gtk_widget_hide_all		  (GtkWidget	       *widget);
823 824 825
void       gtk_widget_set_no_show_all     (GtkWidget           *widget,
					   gboolean             no_show_all);
gboolean   gtk_widget_get_no_show_all     (GtkWidget           *widget);
826 827 828 829
void	   gtk_widget_map		  (GtkWidget	       *widget);
void	   gtk_widget_unmap		  (GtkWidget	       *widget);
void	   gtk_widget_realize		  (GtkWidget	       *widget);
void	   gtk_widget_unrealize		  (GtkWidget	       *widget);
830 831

/* Queuing draws */
832
void	   gtk_widget_queue_draw	  (GtkWidget	       *widget);
833 834 835 836 837
void	   gtk_widget_queue_draw_area	  (GtkWidget	       *widget,
					   gint                 x,
					   gint                 y,
					   gint                 width,
					   gint                 height);
838
#ifndef GTK_DISABLE_DEPRECATED
839 840 841 842 843 844
void	   gtk_widget_queue_clear	  (GtkWidget	       *widget);
void	   gtk_widget_queue_clear_area	  (GtkWidget	       *widget,
					   gint                 x,
					   gint                 y,
					   gint                 width,
					   gint                 height);
845
#endif /* GTK_DISABLE_DEPRECATED */
846 847


848
void	   gtk_widget_queue_resize	  (GtkWidget	       *widget);
Soeren Sandmann's avatar
Soeren Sandmann committed
849
void	   gtk_widget_queue_resize_no_redraw (GtkWidget *widget);
850
#ifndef GTK_DISABLE_DEPRECATED
851
void	   gtk_widget_draw		  (GtkWidget	       *widget,
852
					   const GdkRectangle  *area);
853
#endif /* GTK_DISABLE_DEPRECATED */
854
void	   gtk_widget_size_request	  (GtkWidget	       *widget,
Elliot Lee's avatar
Elliot Lee committed
855
					   GtkRequisition      *requisition);
856
void	   gtk_widget_size_allocate	  (GtkWidget	       *widget,
Elliot Lee's avatar
Elliot Lee committed
857
					   GtkAllocation       *allocation);
858 859 860
void       gtk_widget_get_desired_size    (GtkWidget           *widget,
					   GtkRequisition      *minimum_size,
					   GtkRequisition      *natural_size);
861 862
void       gtk_widget_get_child_requisition (GtkWidget	       *widget,
					     GtkRequisition    *requisition);
Tim Janik's avatar
Tim Janik committed
863 864 865 866
void	   gtk_widget_add_accelerator	  (GtkWidget           *widget,
					   const gchar         *accel_signal,
					   GtkAccelGroup       *accel_group,
					   guint                accel_key,
867
					   GdkModifierType      accel_mods,
Tim Janik's avatar
Tim Janik committed
868
					   GtkAccelFlags        accel_flags);
869
gboolean   gtk_widget_remove_accelerator  (GtkWidget           *widget,
Tim Janik's avatar
Tim Janik committed
870 871
					   GtkAccelGroup       *accel_group,
					   guint                accel_key,
872
					   GdkModifierType      accel_mods);
873
void       gtk_widget_set_accel_path      (GtkWidget           *widget,
874 875
					   const gchar         *accel_path,
					   GtkAccelGroup       *accel_group);
876 877
const gchar* _gtk_widget_get_accel_path   (GtkWidget           *widget,
					   gboolean	       *locked);
878
GList*     gtk_widget_list_accel_closures (GtkWidget	       *widget);
879 880
gboolean   gtk_widget_can_activate_accel  (GtkWidget           *widget,
                                           guint                signal_id);
881
gboolean   gtk_widget_mnemonic_activate   (GtkWidget           *widget,
882
					   gboolean             group_cycling);
883
gboolean   gtk_widget_event		  (GtkWidget	       *widget,
884
					   GdkEvent	       *event);
885 886
gint       gtk_widget_send_expose         (GtkWidget           *widget,
					   GdkEvent            *event);
887

888 889 890 891
gboolean   gtk_widget_activate		     (GtkWidget	       *widget);
gboolean   gtk_widget_set_scroll_adjustments (GtkWidget        *widget,
					      GtkAdjustment    *hadjustment,
					      GtkAdjustment    *vadjustment);
892
     
893 894
void	   gtk_widget_reparent		  (GtkWidget	       *widget,
					   GtkWidget	       *new_parent);
895
gboolean   gtk_widget_intersect		  (GtkWidget	       *widget,
896
					   const GdkRectangle  *area,
897
					   GdkRectangle	       *intersection);
898
GdkRegion *gtk_widget_region_intersect	  (GtkWidget	       *widget,
899
					   const GdkRegion     *region);
900

Tim Janik's avatar
Tim Janik committed
901 902 903 904 905
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);

906 907 908
void       gtk_widget_set_can_focus       (GtkWidget           *widget,
                                           gboolean             can_focus);
gboolean   gtk_widget_get_can_focus       (GtkWidget           *widget);
909
gboolean   gtk_widget_has_focus           (GtkWidget           *widget);
910
gboolean   gtk_widget_is_focus            (GtkWidget           *widget);
911 912 913 914 915 916 917
void       gtk_widget_grab_focus          (GtkWidget           *widget);

void       gtk_widget_set_can_default     (GtkWidget           *widget,
                                           gboolean             can_default);
gboolean   gtk_widget_get_can_default     (GtkWidget           *widget);
gboolean   gtk_widget_has_default         (GtkWidget           *widget);
void       gtk_widget_grab_default        (GtkWidget           *widget);
918

919 920 921 922
void      gtk_widget_set_receives_default (GtkWidget           *widget,
                                           gboolean             receives_default);
gboolean  gtk_widget_get_receives_default (GtkWidget           *widget);

923 924
gboolean   gtk_widget_has_grab            (GtkWidget           *widget);

925 926 927
void                  gtk_widget_set_name               (GtkWidget    *widget,
							 const gchar  *name);
G_CONST_RETURN gchar* gtk_widget_get_name               (GtkWidget    *widget);
928

929 930
void                  gtk_widget_set_state              (GtkWidget    *widget,
							 GtkStateType  state);
931
GtkStateType          gtk_widget_get_state              (GtkWidget    *widget);
932

933 934
void                  gtk_widget_set_sensitive          (GtkWidget    *widget,
							 gboolean      sensitive);
935 936 937
gboolean              gtk_widget_get_sensitive          (GtkWidget    *widget);
gboolean              gtk_widget_is_sensitive           (GtkWidget    *widget);

938 939 940 941
void                  gtk_widget_set_visible            (GtkWidget    *widget,
                                                         gboolean      visible);
gboolean              gtk_widget_get_visible            (GtkWidget    *widget);

942 943 944 945
void                  gtk_widget_set_has_window         (GtkWidget    *widget,
                                                         gboolean      has_window);
gboolean              gtk_widget_get_has_window         (GtkWidget    *widget);

946 947
gboolean              gtk_widget_is_toplevel            (GtkWidget    *widget);
gboolean              gtk_widget_is_drawable            (GtkWidget    *widget);
948 949 950 951 952 953 954
void                  gtk_widget_set_realized           (GtkWidget    *widget,
                                                         gboolean      realized);
gboolean              gtk_widget_get_realized           (GtkWidget    *widget);
void                  gtk_widget_set_mapped             (GtkWidget    *widget,
                                                         gboolean      mapped);
gboolean              gtk_widget_get_mapped             (GtkWidget    *widget);

955 956
void                  gtk_widget_set_app_paintable      (GtkWidget    *widget,
							 gboolean      app_paintable);
957 958
gboolean              gtk_widget_get_app_paintable      (GtkWidget    *widget);

959 960
void                  gtk_widget_set_double_buffered    (GtkWidget    *widget,
							 gboolean      double_buffered);
961 962
gboolean              gtk_widget_get_double_buffered    (GtkWidget    *widget);

963 964
void                  gtk_widget_set_redraw_on_allocate (GtkWidget    *widget,
							 gboolean      redraw_on_allocate);
965

966 967
void                  gtk_widget_set_parent             (GtkWidget    *widget,
							 GtkWidget    *parent);
968
GtkWidget           * gtk_widget_get_parent             (GtkWidget    *widget);
969

970 971
void                  gtk_widget_set_parent_window      (GtkWidget    *widget,
							 GdkWindow    *parent_window);
972
GdkWindow           * gtk_widget_get_parent_window      (GtkWidget    *widget);
973

974 975 976
void                  gtk_widget_set_child_visible      (GtkWidget    *widget,
							 gboolean      is_visible);
gboolean              gtk_widget_get_child_visible      (GtkWidget    *widget);
977 978 979 980

void                  gtk_widget_set_window             (GtkWidget    *widget,
                                                         GdkWindow    *window);
GdkWindow           * gtk_widget_get_window             (GtkWidget    *widget);
981

982 983
void                  gtk_widget_get_allocation         (GtkWidget     *widget,
                                                         GtkAllocation *allocation);
984 985
void                  gtk_widget_set_allocation         (GtkWidget     *widget,
                                                         const GtkAllocation *allocation);
986

987 988 989
void                  gtk_widget_get_requisition        (GtkWidget     *widget,
                                                         GtkRequisition *requisition);

990 991
gboolean   gtk_widget_child_focus         (GtkWidget           *widget,
                                           GtkDirectionType     direction);
992 993 994
gboolean   gtk_widget_keynav_failed       (GtkWidget           *widget,
                                           GtkDirectionType     direction);
void       gtk_widget_error_bell          (GtkWidget           *widget);
Havoc Pennington's avatar
Havoc Pennington committed
995 996 997 998 999 1000 1001 1002

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
1003 1004 1005 1006 1007 1008
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
1009 1010
#endif

1011 1012
void	   gtk_widget_set_events	  (GtkWidget	       *widget,
					   gint			events);
1013 1014
void       gtk_widget_add_events          (GtkWidget           *widget,
					   gint	                events);
1015 1016
void	   gtk_widget_set_extension_events (GtkWidget		*widget,
					    GdkExtensionMode	mode);
Elliot Lee's avatar
Elliot Lee committed
1017

1018 1019 1020
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
1021
					 GType		 widget_type);
1022 1023
GdkColormap* gtk_widget_get_colormap	(GtkWidget	*widget);
GdkVisual*   gtk_widget_get_visual	(GtkWidget	*widget);
1024

1025 1026 1027 1028 1029 1030 1031
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);
1032 1033
GdkPixmap *   gtk_widget_get_snapshot    (GtkWidget    *widget,
                                          GdkRectangle *clip_rect);
1034

1035
#ifndef GTK_DISABLE_DEPRECATED
1036 1037 1038 1039 1040 1041 1042 1043

/**
 * gtk_widget_set_visual:
 * @widget: a #GtkWidget
 * @visual: a visual
 *
 * This function is deprecated; it does nothing.
 */
1044
#define gtk_widget_set_visual(widget,visual)  ((void) 0)
1045 1046 1047 1048 1049 1050 1051

/**
 * gtk_widget_push_visual:
 * @visual: a visual
 *
 * This function is deprecated; it does nothing.
 */
1052
#define gtk_widget_push_visual(visual)        ((void) 0)
1053 1054 1055 1056 1057 1058

/**
 * gtk_widget_pop_visual:
 *
 * This function is deprecated; it does nothing.
 */
1059
#define gtk_widget_pop_visual()               ((void) 0)
1060 1061 1062 1063 1064 1065 1066

/**
 * gtk_widget_set_default_visual:
 * @visual: a visual
 *
 * This function is deprecated; it does nothing.
 */
1067
#define gtk_widget_set_default_visual(visual) ((void) 0)
1068

1069
#endif /* GTK_DISABLE_DEPRECATED */
1070 1071 1072 1073

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

1074 1075 1076 1077 1078 1079 1080 1081 1082
/* 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);

1083 1084 1085 1086 1087
gint	     gtk_widget_get_events	(GtkWidget	*widget);
void	     gtk_widget_get_pointer	(GtkWidget	*widget,
					 gint		*x,
					 gint		*y);

1088
gboolean     gtk_widget_is_ancestor	(GtkWidget	*widget,
1089 1090
					 GtkWidget	*ancestor);

1091 1092 1093 1094 1095 1096 1097
gboolean     gtk_widget_translate_coordinates (GtkWidget  *src_widget,
					       GtkWidget  *dest_widget,
					       gint        src_x,
					       gint        src_y,
					       gint       *dest_x,
					       gint       *dest_y);

1098 1099
/* Hide widget and return TRUE.
 */
1100
gboolean     gtk_widget_hide_on_delete	(GtkWidget	*widget);
1101

1102 1103
/* Widget styles.
 */
1104 1105 1106 1107 1108 1109 1110
void        gtk_widget_style_attach       (GtkWidget            *style);

gboolean    gtk_widget_has_rc_style       (GtkWidget            *widget);
void	    gtk_widget_set_style          (GtkWidget            *widget,
                                           GtkStyle             *style);
void        gtk_widget_ensure_style       (GtkWidget            *widget);
GtkStyle *  gtk_widget_get_style          (GtkWidget            *widget);
1111

1112 1113 1114 1115 1116
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,
1117
					   const GdkColor       *color);
1118 1119
void        gtk_widget_modify_bg          (GtkWidget            *widget,
					   GtkStateType          state,
1120
					   const GdkColor       *color);
1121 1122
void        gtk_widget_modify_text        (GtkWidget            *widget,
					   GtkStateType          state,
1123
					   const GdkColor       *color);
1124 1125
void        gtk_widget_modify_base        (GtkWidget            *widget,
					   GtkStateType          state,
1126
					   const GdkColor       *color);
1127 1128 1129
void        gtk_widget_modify_cursor      (GtkWidget            *widget,
					   const GdkColor       *primary,
					   const GdkColor       *secondary);
1130 1131
void        gtk_widget_modify_font        (GtkWidget            *widget,
					   PangoFontDescription *font_desc);
1132

1133
#ifndef GTK_DISABLE_DEPRECATED
1134 1135 1136 1137 1138 1139 1140

/**
 * gtk_widget_set_rc_style:
 * @widget: a #GtkWidget.
 *
 * Equivalent to <literal>gtk_widget_set_style (widget, NULL)</literal>.
 *
1141
 * Deprecated: 2.0: Use gtk_widget_set_style() with a %NULL @style argument instead.
1142
 */
1143
#define gtk_widget_set_rc_style(widget)          (gtk_widget_set_style (widget, NULL))
1144 1145 1146 1147 1148 1149 1150

/**
 * gtk_widget_restore_default_style:
 * @widget: a #GtkWidget.
 *
 * Equivalent to <literal>gtk_widget_set_style (widget, NULL)</literal>.
 *
1151
 * Deprecated: 2.0: Use gtk_widget_set_style() with a %NULL @style argument instead.
1152
 */
1153 1154 1155
#define gtk_widget_restore_default_style(widget) (gtk_widget_set_style (widget, NULL))
#endif

1156 1157 1158 1159
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);
1160

1161 1162
GdkPixbuf    *gtk_widget_render_icon          (GtkWidget   *widget,
                                               const gchar *stock_id,
1163
                                               GtkIconSize  size,