gtkwidget.h 50.3 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
#ifndef GTK_DISABLE_DEPRECATED
156 157 158 159 160
/**
 * GTK_WIDGET_STATE:
 * @wid: a #GtkWidget.
 *
 * Returns the current state of the widget, as a #GtkStateType.
161 162
 *
 * Deprecated: 2.20: Use gtk_widget_get_state() instead.
163
 */
164
#define GTK_WIDGET_STATE(wid)		  (GTK_WIDGET (wid)->state)
165
#endif
166

167
#ifndef GTK_DISABLE_DEPRECATED
168 169 170 171 172 173 174 175 176
/**
 * 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().
177 178
 *
 * Deprecated: 2.20: Do not used it.
179
 */
180
#define GTK_WIDGET_SAVED_STATE(wid)	  (GTK_WIDGET (wid)->saved_state)
181
#endif
Elliot Lee's avatar
Elliot Lee committed
182

183

184 185
/* Macros for extracting the widget flags from GtkWidget.
 */
186 187 188 189 190
/**
 * GTK_WIDGET_FLAGS:
 * @wid: a #GtkWidget.
 *
 * Returns the widget flags from @wid.
191
 *
192 193 194 195 196 197 198 199 200
 * Deprecated: 2.20: Use the proper function to test individual states:
 * gtk_widget_get_app_paintable(), gtk_widget_get_can_default(),
 * gtk_widget_get_can_focus(), gtk_widget_get_double_buffered(),
 * gtk_widget_has_default(), gtk_widget_is_drawable(),
 * gtk_widget_has_focus(), gtk_widget_has_grab(), gtk_widget_get_mapped(),
 * gtk_widget_get_has_window(), gtk_widget_has_rc_style(),
 * gtk_widget_get_realized(), gtk_widget_get_receives_default(),
 * gtk_widget_get_sensitive(), gtk_widget_is_sensitive(),
 * gtk_widget_is_toplevel() or gtk_widget_get_visible().
201
 */
202
#define GTK_WIDGET_FLAGS(wid)		  (GTK_OBJECT_FLAGS (wid))
203
/* FIXME: Deprecating GTK_WIDGET_FLAGS requires fixing GTK internals. */
204

205
#ifndef GTK_DISABLE_DEPRECATED
206 207 208 209 210
/**
 * GTK_WIDGET_TOPLEVEL:
 * @wid: a #GtkWidget.
 *
 * Evaluates to %TRUE if the widget is a toplevel widget.
211 212
 *
 * Deprecated: 2.20: Use gtk_widget_is_toplevel() instead.
213
 */
214
#define GTK_WIDGET_TOPLEVEL(wid)	  ((GTK_WIDGET_FLAGS (wid) & GTK_TOPLEVEL) != 0)
215
#endif
216

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

229
#ifndef GTK_DISABLE_DEPRECATED
230 231 232 233 234
/**
 * GTK_WIDGET_REALIZED:
 * @wid: a #GtkWidget.
 *
 * Evaluates to %TRUE if the widget is realized.
235 236
 *
 * Deprecated: 2.20: Use gtk_widget_get_realized() instead.
237
 */
238
#define GTK_WIDGET_REALIZED(wid)	  ((GTK_WIDGET_FLAGS (wid) & GTK_REALIZED) != 0)
239
#endif
240

241
#ifndef GTK_DISABLE_DEPRECATED
242 243 244 245 246
/**
 * GTK_WIDGET_MAPPED:
 * @wid: a #GtkWidget.
 *
 * Evaluates to %TRUE if the widget is mapped.
247 248
 *
 * Deprecated: 2.20: Use gtk_widget_get_mapped() instead.
249
 */
250
#define GTK_WIDGET_MAPPED(wid)		  ((GTK_WIDGET_FLAGS (wid) & GTK_MAPPED) != 0)
251
#endif
252

253
#ifndef GTK_DISABLE_DEPRECATED
254 255 256 257 258
/**
 * GTK_WIDGET_VISIBLE:
 * @wid: a #GtkWidget.
 *
 * Evaluates to %TRUE if the widget is visible.
259 260
 *
 * Deprecated: 2.20: Use gtk_widget_get_visible() instead.
261
 */
262
#define GTK_WIDGET_VISIBLE(wid)		  ((GTK_WIDGET_FLAGS (wid) & GTK_VISIBLE) != 0)
263
#endif
264

265
#ifndef GTK_DISABLE_DEPRECATED
266 267 268 269 270
/**
 * GTK_WIDGET_DRAWABLE:
 * @wid: a #GtkWidget.
 *
 * Evaluates to %TRUE if the widget is mapped and visible.
271 272
 *
 * Deprecated: 2.20: Use gtk_widget_is_drawable() instead.
273
 */
274
#define GTK_WIDGET_DRAWABLE(wid)	  (GTK_WIDGET_VISIBLE (wid) && GTK_WIDGET_MAPPED (wid))
275
#endif
276

277
#ifndef GTK_DISABLE_DEPRECATED
278 279 280 281 282
/**
 * GTK_WIDGET_SENSITIVE:
 * @wid: a #GtkWidget.
 *
 * Evaluates to %TRUE if the #GTK_SENSITIVE flag has be set on the widget.
283 284
 *
 * Deprecated: 2.20: Use gtk_widget_get_sensitive() instead.
285
 */
286
#define GTK_WIDGET_SENSITIVE(wid)	  ((GTK_WIDGET_FLAGS (wid) & GTK_SENSITIVE) != 0)
287
#endif
288

289
#ifndef GTK_DISABLE_DEPRECATED
290 291 292 293 294
/**
 * GTK_WIDGET_PARENT_SENSITIVE:
 * @wid: a #GtkWidget.
 *
 * Evaluates to %TRUE if the #GTK_PARENT_SENSITIVE flag has be set on the widget.
295 296
 *
 * Deprecated: 2.20: Use gtk_widget_get_sensitive() on the parent widget instead.
297
 */
298
#define GTK_WIDGET_PARENT_SENSITIVE(wid)  ((GTK_WIDGET_FLAGS (wid) & GTK_PARENT_SENSITIVE) != 0)
299
#endif
300

301
#ifndef GTK_DISABLE_DEPRECATED
302 303 304 305 306
/**
 * GTK_WIDGET_IS_SENSITIVE:
 * @wid: a #GtkWidget.
 *
 * Evaluates to %TRUE if the widget is effectively sensitive.
307 308
 *
 * Deprecated: 2.20: Use gtk_widget_is_sensitive() instead.
309
 */
310 311
#define GTK_WIDGET_IS_SENSITIVE(wid)	  (GTK_WIDGET_SENSITIVE (wid) && \
					   GTK_WIDGET_PARENT_SENSITIVE (wid))
312
#endif
313 314

#ifndef GTK_DISABLE_DEPRECATED
315 316 317 318 319
/**
 * GTK_WIDGET_CAN_FOCUS:
 * @wid: a #GtkWidget.
 *
 * Evaluates to %TRUE if the widget is able to handle focus grabs.
320 321
 *
 * Deprecated: 2.20: Use gtk_widget_get_can_focus() instead.
322
 */
323
#define GTK_WIDGET_CAN_FOCUS(wid)	  ((GTK_WIDGET_FLAGS (wid) & GTK_CAN_FOCUS) != 0)
324
#endif
325

326
#ifndef GTK_DISABLE_DEPRECATED
327 328 329 330 331 332
/**
 * 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.
333 334
 *
 * Deprecated: 2.20: Use gtk_widget_has_focus() instead.
335
 */
336
#define GTK_WIDGET_HAS_FOCUS(wid)	  ((GTK_WIDGET_FLAGS (wid) & GTK_HAS_FOCUS) != 0)
337
#endif
338

Javier Jardón's avatar
Javier Jardón committed
339
#ifndef GTK_DISABLE_DEPRECATED
340 341 342 343 344 345
/**
 * 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
346 347
 *
 * Deprecated: 2.20: Use gtk_widget_get_can_default() instead.
348
 */
349
#define GTK_WIDGET_CAN_DEFAULT(wid)	  ((GTK_WIDGET_FLAGS (wid) & GTK_CAN_DEFAULT) != 0)
Javier Jardón's avatar
Javier Jardón committed
350
#endif
351

Javier Jardón's avatar
Javier Jardón committed
352
#ifndef GTK_DISABLE_DEPRECATED
353 354 355 356 357
/**
 * 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
358 359
 *
 * Deprecated: 2.20: Use gtk_widget_has_default() instead.
360
 */
361
#define GTK_WIDGET_HAS_DEFAULT(wid)	  ((GTK_WIDGET_FLAGS (wid) & GTK_HAS_DEFAULT) != 0)
Javier Jardón's avatar
Javier Jardón committed
362
#endif
363

Javier Jardón's avatar
Javier Jardón committed
364
#ifndef GTK_DISABLE_DEPRECATED
365 366 367 368 369 370
/**
 * 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
371 372
 *
 * Deprecated: 2.20: Use gtk_widget_has_grab() instead.
373
 */
374
#define GTK_WIDGET_HAS_GRAB(wid)	  ((GTK_WIDGET_FLAGS (wid) & GTK_HAS_GRAB) != 0)
Javier Jardón's avatar
Javier Jardón committed
375
#endif
376

377
#ifndef GTK_DISABLE_DEPRECATED
378 379 380 381 382 383
/**
 * GTK_WIDGET_RC_STYLE:
 * @wid: a #GtkWidget.
 *
 * Evaluates to %TRUE if the widget's style has been looked up through the rc
 * mechanism.
384 385
 *
 * Deprecated: 2.20: Use gtk_widget_has_rc_style() instead.
386
 */
387
#define GTK_WIDGET_RC_STYLE(wid)	  ((GTK_WIDGET_FLAGS (wid) & GTK_RC_STYLE) != 0)
388 389
#endif

390
#ifndef GTK_DISABLE_DEPRECATED
391 392 393 394 395
/**
 * GTK_WIDGET_COMPOSITE_CHILD:
 * @wid: a #GtkWidget.
 *
 * Evaluates to %TRUE if the widget is a composite child of its parent.
396
 *
397
 * Deprecated: 2.20: Use the #GtkWidget:composite-child property instead.
398
 */
399
#define GTK_WIDGET_COMPOSITE_CHILD(wid)	  ((GTK_WIDGET_FLAGS (wid) & GTK_COMPOSITE_CHILD) != 0)
400
#endif
401

Javier Jardón's avatar
Javier Jardón committed
402
#ifndef GTK_DISABLE_DEPRECATED
403 404 405 406 407
/**
 * 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
408 409
 *
 * Deprecated: 2.20: Use gtk_widget_get_app_paintable() instead.
410
 */
411
#define GTK_WIDGET_APP_PAINTABLE(wid)	  ((GTK_WIDGET_FLAGS (wid) & GTK_APP_PAINTABLE) != 0)
Javier Jardón's avatar
Javier Jardón committed
412
#endif
413

Javier Jardón's avatar
Javier Jardón committed
414
#ifndef GTK_DISABLE_DEPRECATED
415 416 417 418 419 420
/**
 * 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
421 422
 *
 * Deprecated: 2.20: Use gtk_widget_get_receives_default() instead.
423
 */
424
#define GTK_WIDGET_RECEIVES_DEFAULT(wid)  ((GTK_WIDGET_FLAGS (wid) & GTK_RECEIVES_DEFAULT) != 0)
Javier Jardón's avatar
Javier Jardón committed
425
#endif
426

Javier Jardón's avatar
Javier Jardón committed
427
#ifndef GTK_DISABLE_DEPRECATED
428 429 430 431 432
/**
 * 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
433 434
 *
 * Deprecated: 2.20: Use gtk_widget_get_double_buffered() instead.
435
 */
436
#define GTK_WIDGET_DOUBLE_BUFFERED(wid)	  ((GTK_WIDGET_FLAGS (wid) & GTK_DOUBLE_BUFFERED) != 0)
Javier Jardón's avatar
Javier Jardón committed
437
#endif
438 439


440
/* Macros for setting and clearing widget flags.
Elliot Lee's avatar
Elliot Lee committed
441
 */
442 443 444 445 446 447
/**
 * GTK_WIDGET_SET_FLAGS:
 * @wid: a #GtkWidget.
 * @flag: the flags to set.
 *
 * Turns on certain widget flags.
448 449 450 451 452 453 454 455
 *
 * Deprecated: 2.22: Use the proper function instead: gtk_widget_set_app_paintable(),
 *   gtk_widget_set_can_default(), gtk_widget_set_can_focus(),
 *   gtk_widget_set_double_buffered(), gtk_widget_set_has_window(),
 *   gtk_widget_set_mapped(), gtk_widget_set_no_show_all(),
 *   gtk_widget_set_realized(), gtk_widget_set_receives_default(),
 *   gtk_widget_set_sensitive() or gtk_widget_set_visible().
 *
456
 */
457
#define GTK_WIDGET_SET_FLAGS(wid,flag)	  G_STMT_START{ (GTK_WIDGET_FLAGS (wid) |= (flag)); }G_STMT_END
458
/* FIXME: Deprecating GTK_WIDGET_SET_FLAGS requires fixing GTK internals. */
459 460 461 462 463 464 465

/**
 * GTK_WIDGET_UNSET_FLAGS:
 * @wid: a #GtkWidget.
 * @flag: the flags to unset.
 *
 * Turns off certain widget flags.
466 467
 *
 * Deprecated: 2.22: Use the proper function instead. See GTK_WIDGET_SET_FLAGS().
468
 */
469
#define GTK_WIDGET_UNSET_FLAGS(wid,flag)  G_STMT_START{ (GTK_WIDGET_FLAGS (wid) &= ~(flag)); }G_STMT_END
470
/* FIXME: Deprecating GTK_WIDGET_UNSET_FLAGS requires fixing GTK internals. */
Elliot Lee's avatar
Elliot Lee committed
471

472
#define GTK_TYPE_REQUISITION              (gtk_requisition_get_type ())
473 474 475 476 477 478 479 480

/* 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;
481
typedef struct _GtkClipboard	   GtkClipboard;
Kristian Rietveld's avatar
Kristian Rietveld committed
482 483
typedef struct _GtkTooltip         GtkTooltip;
typedef struct _GtkWindow          GtkWindow;
Elliot Lee's avatar
Elliot Lee committed
484

485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515
/**
 * 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
516 517 518
 */
struct _GtkRequisition
{
519 520
  gint width;
  gint height;
Elliot Lee's avatar
Elliot Lee committed
521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536
};

/* 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;
537
  
538 539 540 541 542
  /* 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
543
  guint16 GSEAL (private_flags);
544
  
Elliot Lee's avatar
Elliot Lee committed
545 546 547
  /* The state of the widget. There are actually only
   *  5 widget states (defined in "gtkenums.h").
   */
Tim Janik's avatar
Tim Janik committed
548
  guint8 GSEAL (state);
549
  
550
  /* The saved state of the widget. When a widget's state
551 552 553 554
   *  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
555
   */
Tim Janik's avatar
Tim Janik committed
556
  guint8 GSEAL (saved_state);
557
  
558
  /* The widget's name. If the widget does not have a name
Elliot Lee's avatar
Elliot Lee committed
559
   *  (the name is NULL), then its name (as returned by
560
   *  "gtk_widget_get_name") is its class's name.
561 562
   * Among other things, the widget name is used to determine
   *  the style to use for a widget.
Elliot Lee's avatar
Elliot Lee committed
563
   */
Tim Janik's avatar
Tim Janik committed
564
  gchar *GSEAL (name);
565
  
566 567
  /*< public >*/

Elliot Lee's avatar
Elliot Lee committed
568 569 570 571 572
  /* 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
573
  GtkStyle *GSEAL (style);
574
  
575
  /* The widget's desired size.
Elliot Lee's avatar
Elliot Lee committed
576
   */
Tim Janik's avatar
Tim Janik committed
577
  GtkRequisition GSEAL (requisition);
578
  
579
  /* The widget's allocated size.
Elliot Lee's avatar
Elliot Lee committed
580
   */
Tim Janik's avatar
Tim Janik committed
581
  GtkAllocation GSEAL (allocation);
582
  
583
  /* The widget's window or its parent window if it does
Elliot Lee's avatar
Elliot Lee committed
584 585 586
   *  not have a window. (Which will be indicated by the
   *  GTK_NO_WINDOW flag being set).
   */
Tim Janik's avatar
Tim Janik committed
587
  GdkWindow *GSEAL (window);
588
  
589
  /* The widget's parent.
Elliot Lee's avatar
Elliot Lee committed
590
   */
Tim Janik's avatar
Tim Janik committed
591
  GtkWidget *GSEAL (parent);
Elliot Lee's avatar
Elliot Lee committed
592 593
};

594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611
/**
 * 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
612 613 614 615 616 617 618 619 620
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
621 622

  /*< public >*/
623
  
624
  guint activate_signal;
625

626
  guint set_scroll_adjustments_signal;
627

Soren Sandmann's avatar
Soren Sandmann committed
628 629
  /*< private >*/
  
Tim Janik's avatar
Tim Janik committed
630 631 632 633 634
  /* seldomly overidden */
  void (*dispatch_child_properties_changed) (GtkWidget   *widget,
					     guint        n_pspecs,
					     GParamSpec **pspecs);

Elliot Lee's avatar
Elliot Lee committed
635
  /* basics */
636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651
  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);
652 653
  void (* hierarchy_changed)   (GtkWidget        *widget,
				GtkWidget        *previous_toplevel);
654 655 656 657
  void (* style_set)	       (GtkWidget        *widget,
				GtkStyle         *previous_style);
  void (* direction_changed)   (GtkWidget        *widget,
				GtkTextDirection  previous_direction);
658 659
  void (* grab_notify)         (GtkWidget        *widget,
				gboolean          was_grabbed);
Tim Janik's avatar
Tim Janik committed
660 661
  void (* child_notify)        (GtkWidget	 *widget,
				GParamSpec       *pspec);
662
  
663
  /* Mnemonics */
664
  gboolean (* mnemonic_activate) (GtkWidget    *widget,
665 666
				  gboolean      group_cycling);
  
667
  /* explicit focus */
Tim Janik's avatar
Tim Janik committed
668
  void     (* grab_focus)      (GtkWidget        *widget);
669 670
  gboolean (* focus)           (GtkWidget        *widget,
                                GtkDirectionType  direction);
671
  
Elliot Lee's avatar
Elliot Lee committed
672
  /* events */
673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726
  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);
727
  
Elliot Lee's avatar
Elliot Lee committed
728
  /* selection */
729 730 731
  void (* selection_get)           (GtkWidget          *widget,
				    GtkSelectionData   *selection_data,
				    guint               info,
732
				    guint               time_);
733
  void (* selection_received)      (GtkWidget          *widget,
734
				    GtkSelectionData   *selection_data,
735
				    guint               time_);
736 737 738 739 740 741 742 743 744 745

  /* 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,
746
				    guint               time_);
747 748 749 750 751 752
  void (* drag_data_delete)        (GtkWidget	       *widget,
				    GdkDragContext     *context);

  /* Target side drag signals */
  void (* drag_leave)	           (GtkWidget	       *widget,
				    GdkDragContext     *context,
753
				    guint               time_);
754 755 756 757
  gboolean (* drag_motion)         (GtkWidget	       *widget,
				    GdkDragContext     *context,
				    gint                x,
				    gint                y,
758
				    guint               time_);
759 760 761 762
  gboolean (* drag_drop)           (GtkWidget	       *widget,
				    GdkDragContext     *context,
				    gint                x,
				    gint                y,
763
				    guint               time_);
764 765
  void (* drag_data_received)      (GtkWidget          *widget,
				    GdkDragContext     *context,
766 767
				    gint                x,
				    gint                y,
768 769
				    GtkSelectionData   *selection_data,
				    guint               info,
770
				    guint               time_);
Owen Taylor's avatar
Owen Taylor committed
771 772

  /* Signals used only for keybindings */
773
  gboolean (* popup_menu)          (GtkWidget          *widget);
774 775 776 777 778 779

  /* 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.
   */
780
  gboolean (* show_help)           (GtkWidget          *widget,
781
                                    GtkWidgetHelpType   help_type);
782 783 784
  
  /* accessibility support 
   */
785 786 787 788 789 790
  AtkObject*   (*get_accessible)     (GtkWidget *widget);

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

792 793 794 795
  /* Sent when a grab is broken. */
  gboolean (*grab_broken_event) (GtkWidget	     *widget,
                                 GdkEventGrabBroken  *event);

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

Kristian Rietveld's avatar
Kristian Rietveld committed
798 799 800 801 802
  gboolean     (* query_tooltip)      (GtkWidget  *widget,
				       gint        x,
				       gint        y,
				       gboolean    keyboard_tooltip,
				       GtkTooltip *tooltip);
803 804 805 806
  /* Signals without a C default handler class slot:
   * gboolean	(*damage_event)	(GtkWidget      *widget,
   *                             GdkEventExpose *event);
   */
Kristian Rietveld's avatar
Kristian Rietveld committed
807

Owen Taylor's avatar
Owen Taylor committed
808
  /* Padding for future expansion */
809 810 811
  void (*_gtk_reserved5) (void);
  void (*_gtk_reserved6) (void);
  void (*_gtk_reserved7) (void);
Elliot Lee's avatar
Elliot Lee committed
812 813 814 815
};

struct _GtkWidgetAuxInfo
{
816 817 818 819
  gint x;
  gint y;
  gint width;
  gint height;
820 821
  guint x_set : 1;
  guint y_set : 1;
Elliot Lee's avatar
Elliot Lee committed
822 823 824 825 826 827 828 829 830
};

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

Manish Singh's avatar
Manish Singh committed
831 832
GType	   gtk_widget_get_type		  (void) G_GNUC_CONST;
GtkWidget* gtk_widget_new		  (GType		type,
833
					   const gchar	       *first_property_name,
834
					   ...);
835 836 837
void	   gtk_widget_destroy		  (GtkWidget	       *widget);
void	   gtk_widget_destroyed		  (GtkWidget	       *widget,
					   GtkWidget	      **widget_pointer);
Owen Taylor's avatar
Owen Taylor committed
838
#ifndef GTK_DISABLE_DEPRECATED
839 840
GtkWidget* gtk_widget_ref		  (GtkWidget	       *widget);
void	   gtk_widget_unref		  (GtkWidget	       *widget);
841
void	   gtk_widget_set		  (GtkWidget	       *widget,
842
					   const gchar         *first_property_name,
843
					   ...) G_GNUC_NULL_TERMINATED;
Owen Taylor's avatar
Owen Taylor committed
844
#endif /* GTK_DISABLE_DEPRECATED */
845 846
void	   gtk_widget_unparent		  (GtkWidget	       *widget);
void	   gtk_widget_show		  (GtkWidget	       *widget);
847
void       gtk_widget_show_now            (GtkWidget           *widget);
848 849 850
void	   gtk_widget_hide		  (GtkWidget	       *widget);
void	   gtk_widget_show_all		  (GtkWidget	       *widget);
void	   gtk_widget_hide_all		  (GtkWidget	       *widget);
851 852 853
void       gtk_widget_set_no_show_all     (GtkWidget           *widget,
					   gboolean             no_show_all);
gboolean   gtk_widget_get_no_show_all     (GtkWidget           *widget);
854 855 856 857
void	   gtk_widget_map		  (GtkWidget	       *widget);
void	   gtk_widget_unmap		  (GtkWidget	       *widget);
void	   gtk_widget_realize		  (GtkWidget	       *widget);
void	   gtk_widget_unrealize		  (GtkWidget	       *widget);
858 859

/* Queuing draws */
860
void	   gtk_widget_queue_draw	  (GtkWidget	       *widget);
861 862 863 864 865
void	   gtk_widget_queue_draw_area	  (GtkWidget	       *widget,
					   gint                 x,
					   gint                 y,
					   gint                 width,
					   gint                 height);
866
#ifndef GTK_DISABLE_DEPRECATED
867 868 869 870 871 872
void	   gtk_widget_queue_clear	  (GtkWidget	       *widget);
void	   gtk_widget_queue_clear_area	  (GtkWidget	       *widget,
					   gint                 x,
					   gint                 y,
					   gint                 width,
					   gint                 height);
873
#endif /* GTK_DISABLE_DEPRECATED */
874 875


876
void	   gtk_widget_queue_resize	  (GtkWidget	       *widget);
Soeren Sandmann's avatar
Soeren Sandmann committed
877
void	   gtk_widget_queue_resize_no_redraw (GtkWidget *widget);
878
#ifndef GTK_DISABLE_DEPRECATED
879
void	   gtk_widget_draw		  (GtkWidget	       *widget,
880
					   const GdkRectangle  *area);
881
#endif /* GTK_DISABLE_DEPRECATED */
882
void	   gtk_widget_size_request	  (GtkWidget	       *widget,
Elliot Lee's avatar
Elliot Lee committed
883
					   GtkRequisition      *requisition);
884
void	   gtk_widget_size_allocate	  (GtkWidget	       *widget,
Elliot Lee's avatar
Elliot Lee committed
885
					   GtkAllocation       *allocation);
886 887
void       gtk_widget_get_child_requisition (GtkWidget	       *widget,
					     GtkRequisition    *requisition);
Tim Janik's avatar
Tim Janik committed
888 889 890 891
void	   gtk_widget_add_accelerator	  (GtkWidget           *widget,
					   const gchar         *accel_signal,
					   GtkAccelGroup       *accel_group,
					   guint                accel_key,
892
					   GdkModifierType      accel_mods,
Tim Janik's avatar
Tim Janik committed
893
					   GtkAccelFlags        accel_flags);
894
gboolean   gtk_widget_remove_accelerator  (GtkWidget           *widget,
Tim Janik's avatar
Tim Janik committed
895 896
					   GtkAccelGroup       *accel_group,
					   guint                accel_key,
897
					   GdkModifierType      accel_mods);
898
void       gtk_widget_set_accel_path      (GtkWidget           *widget,
899 900
					   const gchar         *accel_path,
					   GtkAccelGroup       *accel_group);
901 902
const gchar* _gtk_widget_get_accel_path   (GtkWidget           *widget,
					   gboolean	       *locked);
903
GList*     gtk_widget_list_accel_closures (GtkWidget	       *widget);
904 905
gboolean   gtk_widget_can_activate_accel  (GtkWidget           *widget,
                                           guint                signal_id);
906
gboolean   gtk_widget_mnemonic_activate   (GtkWidget           *widget,
907
					   gboolean             group_cycling);
908
gboolean   gtk_widget_event		  (GtkWidget	       *widget,
909
					   GdkEvent	       *event);
910 911
gint       gtk_widget_send_expose         (GtkWidget           *widget,
					   GdkEvent            *event);
912 913
gboolean   gtk_widget_send_focus_change   (GtkWidget           *widget,
                                           GdkEvent            *event);
914

915 916 917 918
gboolean   gtk_widget_activate		     (GtkWidget	       *widget);
gboolean   gtk_widget_set_scroll_adjustments (GtkWidget        *widget,
					      GtkAdjustment    *hadjustment,
					      GtkAdjustment    *vadjustment);
919
     
920 921
void	   gtk_widget_reparent		  (GtkWidget	       *widget,
					   GtkWidget	       *new_parent);
922
gboolean   gtk_widget_intersect		  (GtkWidget	       *widget,
923
					   const GdkRectangle  *area,
924
					   GdkRectangle	       *intersection);
925
GdkRegion *gtk_widget_region_intersect	  (GtkWidget	       *widget,
926
					   const GdkRegion     *region);
927

Tim Janik's avatar
Tim Janik committed
928 929 930 931 932
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);

933 934 935
void       gtk_widget_set_can_focus       (GtkWidget           *widget,
                                           gboolean             can_focus);
gboolean   gtk_widget_get_can_focus       (GtkWidget           *widget);
936
gboolean   gtk_widget_has_focus           (GtkWidget           *widget);
937
gboolean   gtk_widget_is_focus            (GtkWidget           *widget);
938 939 940 941 942 943 944
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);
945

946 947 948 949
void      gtk_widget_set_receives_default (GtkWidget           *widget,
                                           gboolean             receives_default);
gboolean  gtk_widget_get_receives_default (GtkWidget           *widget);

950 951
gboolean   gtk_widget_has_grab            (GtkWidget           *widget);

952 953 954
void                  gtk_widget_set_name               (GtkWidget    *widget,
							 const gchar  *name);
G_CONST_RETURN gchar* gtk_widget_get_name               (GtkWidget    *widget);
955

956 957
void                  gtk_widget_set_state              (GtkWidget    *widget,
							 GtkStateType  state);
958
GtkStateType          gtk_widget_get_state              (GtkWidget    *widget);
959

960 961
void                  gtk_widget_set_sensitive          (GtkWidget    *widget,
							 gboolean      sensitive);
962 963 964
gboolean              gtk_widget_get_sensitive          (GtkWidget    *widget);
gboolean              gtk_widget_is_sensitive           (GtkWidget    *widget);

965 966 967 968
void                  gtk_widget_set_visible            (GtkWidget    *widget,
                                                         gboolean      visible);
gboolean              gtk_widget_get_visible            (GtkWidget    *widget);

969 970 971 972
void                  gtk_widget_set_has_window         (GtkWidget    *widget,
                                                         gboolean      has_window);
gboolean              gtk_widget_get_has_window         (GtkWidget    *widget);

973 974
gboolean              gtk_widget_is_toplevel            (GtkWidget    *widget);
gboolean              gtk_widget_is_drawable            (GtkWidget    *widget);
975 976 977 978 979 980 981
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);

982 983
void                  gtk_widget_set_app_paintable      (GtkWidget    *widget,
							 gboolean      app_paintable);
984 985
gboolean              gtk_widget_get_app_paintable      (GtkWidget    *widget);

986 987
void                  gtk_widget_set_double_buffered    (GtkWidget    *widget,
							 gboolean      double_buffered);
988 989
gboolean              gtk_widget_get_double_buffered    (GtkWidget    *widget);

990 991
void                  gtk_widget_set_redraw_on_allocate (GtkWidget    *widget,
							 gboolean      redraw_on_allocate);
992

993 994
void                  gtk_widget_set_parent             (GtkWidget    *widget,
							 GtkWidget    *parent);
995
GtkWidget           * gtk_widget_get_parent             (GtkWidget    *widget);
996

997 998
void                  gtk_widget_set_parent_window      (GtkWidget    *widget,
							 GdkWindow    *parent_window);
999
GdkWindow           * gtk_widget_get_parent_window      (GtkWidget    *widget);
1000

1001 1002 1003
void                  gtk_widget_set_child_visible      (GtkWidget    *widget,
							 gboolean      is_visible);
gboolean              gtk_widget_get_child_visible      (GtkWidget    *widget);
1004 1005 1006 1007

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

1009 1010
void                  gtk_widget_get_allocation         (GtkWidget     *widget,
                                                         GtkAllocation *allocation);
1011 1012
void                  gtk_widget_set_allocation         (GtkWidget     *widget,
                                                         const GtkAllocation *allocation);
1013

1014 1015 1016
void                  gtk_widget_get_requisition        (GtkWidget     *widget,
                                                         GtkRequisition *requisition);

1017 1018
gboolean   gtk_widget_child_focus         (GtkWidget           *widget,
                                           GtkDirectionType     direction);
1019 1020 1021
gboolean   gtk_widget_keynav_failed       (GtkWidget           *widget,
                                           GtkDirectionType     direction);
void       gtk_widget_error_bell          (GtkWidget           *widget);
Havoc Pennington's avatar
Havoc Pennington committed
1022 1023 1024 1025 1026 1027 1028 1029

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
1030 1031 1032 1033 1034 1035
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
1036 1037
#endif

1038 1039
void	   gtk_widget_set_events	  (GtkWidget	       *widget,
					   gint			events);
1040 1041
void       gtk_widget_add_events          (GtkWidget           *widget,
					   gint	                events);
1042 1043
void	   gtk_widget_set_extension_events (GtkWidget		*widget,
					    GdkExtensionMode	mode);
Elliot Lee's avatar
Elliot Lee committed
1044

1045 1046 1047
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
1048
					 GType		 widget_type);
1049 1050
GdkColormap* gtk_widget_get_colormap	(GtkWidget	*widget);
GdkVisual*   gtk_widget_get_visual	(GtkWidget	*widget);
1051

1052 1053 1054 1055 1056 1057 1058
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);
1059 1060
GdkPixmap *   gtk_widget_get_snapshot    (GtkWidget    *widget,
                                          GdkRectangle *clip_rect);
1061

1062
#ifndef GTK_DISABLE_DEPRECATED
1063 1064 1065 1066 1067 1068 1069 1070

/**
 * gtk_widget_set_visual:
 * @widget: a #GtkWidget
 * @visual: a visual
 *
 * This function is deprecated; it does nothing.
 */
1071
#define gtk_widget_set_visual(widget,visual)  ((void) 0)
1072 1073 1074 1075 1076 1077 1078

/**
 * gtk_widget_push_visual:
 * @visual: a visual
 *
 * This function is deprecated; it does nothing.
 */
1079
#define gtk_widget_push_visual(visual)        ((void) 0)
1080 1081 1082 1083 1084 1085

/**
 * gtk_widget_pop_visual:
 *
 * This function is deprecated; it does nothing.
 */
1086
#define gtk_widget_pop_visual()               ((void) 0)
1087 1088 1089 1090 1091 1092 1093

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

1096
#endif /* GTK_DISABLE_DEPRECATED */
1097 1098 1099 1100

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

1101 1102 1103 1104 1105 1106 1107 1108 1109
/* 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);

1110 1111 1112 1113 1114
gint	     gtk_widget_get_events	(GtkWidget	*widget);
void	     gtk_widget_get_pointer	(GtkWidget	*widget,
					 gint		*x,
					 gint		*y);

1115
gboolean     gtk_widget_is_ancestor	(GtkWidget	*widget,
1116 1117
					 GtkWidget	*ancestor);

1118 1119 1120 1121 1122 1123 1124
gboolean     gtk_widget_translate_coordinates (GtkWidget  *src_widget,
					       GtkWidget  *dest_widget,
					       gint        src_x,
					       gint        src_y,
					       gint       *dest_x,
					       gint       *dest_y);

1125 1126
/* Hide widget and return TRUE.
 */
1127
gboolean     gtk_widget_hide_on_delete	(GtkWidget	*widget);
1128

1129 1130
/* Widget styles.
 */
1131 1132 1133 1134 1135 1136 1137
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);
1138

1139 1140 1141 1142 1143
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,
1144
					   const GdkColor       *color);
1145 1146
void        gtk_widget_modify_bg          (GtkWidget            *widget,
					   GtkStateType          state,
1147
					   const GdkColor       *color);
1148 1149
void        gtk_widget_modify_text        (GtkWidget            *widget,
					   GtkStateType          state,
1150
					   const GdkColor       *color);
1151 1152
void        gtk_widget_modify_base        (GtkWidget            *widget,
					   GtkStateType          state,
1153
					   const GdkColor       *color);
1154 1155 1156
void        gtk_widget_modify_cursor      (GtkWidget            *widget,
					   const GdkColor       *primary,
					   const GdkColor       *secondary);