gtkwidget.h 41.7 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
#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
28 29 30
#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
/**
 * 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_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
99
 */
Tim Janik's avatar
Tim Janik committed
100
typedef enum
Elliot Lee's avatar
Elliot Lee committed
101
{
102 103 104 105 106 107 108 109 110 111 112 113 114
  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,
115
  GTK_COMPOSITE_CHILD  = 1 << 17,
116
  GTK_APP_PAINTABLE    = 1 << 18,
Javier Jardón's avatar
Javier Jardón committed
117
  GTK_RECEIVES_DEFAULT = 1 << 19,
118 119 120
  GTK_DOUBLE_BUFFERED  = 1 << 20,
  GTK_NO_SHOW_ALL      = 1 << 21,
  GTK_MULTIDEVICE      = 1 << 22
121
} GtkWidgetFlags;
Elliot Lee's avatar
Elliot Lee committed
122

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

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

140 141
/* Macros for extracting the widget flags from GtkWidget.
 */
142 143 144 145 146
/**
 * GTK_WIDGET_FLAGS:
 * @wid: a #GtkWidget.
 *
 * Returns the widget flags from @wid.
147
 *
148 149 150 151 152 153 154 155 156
 * 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().
157
 */
158
#define GTK_WIDGET_FLAGS(wid)		  (GTK_OBJECT_FLAGS (wid))
159
/* FIXME: Deprecating GTK_WIDGET_FLAGS requires fixing GTK internals. */
160

161
/* Macros for setting and clearing widget flags.
Elliot Lee's avatar
Elliot Lee committed
162
 */
163 164 165 166 167 168
/**
 * GTK_WIDGET_SET_FLAGS:
 * @wid: a #GtkWidget.
 * @flag: the flags to set.
 *
 * Turns on certain widget flags.
169 170 171 172 173 174 175 176
 *
 * 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().
 *
177
 */
178
#define GTK_WIDGET_SET_FLAGS(wid,flag)	  G_STMT_START{ (GTK_WIDGET_FLAGS (wid) |= (flag)); }G_STMT_END
179
/* FIXME: Deprecating GTK_WIDGET_SET_FLAGS requires fixing GTK internals. */
180 181 182 183 184 185 186

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

193
#define GTK_TYPE_REQUISITION              (gtk_requisition_get_type ())
194 195 196 197 198 199 200 201

/* 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;
202
typedef struct _GtkClipboard	   GtkClipboard;
Kristian Rietveld's avatar
Kristian Rietveld committed
203 204
typedef struct _GtkTooltip         GtkTooltip;
typedef struct _GtkWindow          GtkWindow;
Elliot Lee's avatar
Elliot Lee committed
205

206

207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237
/**
 * 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
238 239 240
 */
struct _GtkRequisition
{
241 242
  gint width;
  gint height;
Elliot Lee's avatar
Elliot Lee committed
243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258
};

/* 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;
259
  
260 261 262 263 264
  /* 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
265
  guint16 GSEAL (private_flags);
266
  
Elliot Lee's avatar
Elliot Lee committed
267 268 269
  /* The state of the widget. There are actually only
   *  5 widget states (defined in "gtkenums.h").
   */
Tim Janik's avatar
Tim Janik committed
270
  guint8 GSEAL (state);
271
  
272
  /* The saved state of the widget. When a widget's state
273 274 275 276
   *  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
277
   */
Tim Janik's avatar
Tim Janik committed
278
  guint8 GSEAL (saved_state);
279
  
280
  /* The widget's name. If the widget does not have a name
Elliot Lee's avatar
Elliot Lee committed
281
   *  (the name is NULL), then its name (as returned by
282
   *  "gtk_widget_get_name") is its class's name.
283 284
   * Among other things, the widget name is used to determine
   *  the style to use for a widget.
Elliot Lee's avatar
Elliot Lee committed
285
   */
Tim Janik's avatar
Tim Janik committed
286
  gchar *GSEAL (name);
287
  
288 289
  /*< public >*/

Elliot Lee's avatar
Elliot Lee committed
290 291 292 293 294
  /* 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
295
  GtkStyle *GSEAL (style);
296
  
297
  /* The widget's desired size.
Elliot Lee's avatar
Elliot Lee committed
298
   */
Tim Janik's avatar
Tim Janik committed
299
  GtkRequisition GSEAL (requisition);
300
  
301
  /* The widget's allocated size.
Elliot Lee's avatar
Elliot Lee committed
302
   */
Tim Janik's avatar
Tim Janik committed
303
  GtkAllocation GSEAL (allocation);
304
  
305
  /* The widget's window or its parent window if it does
Elliot Lee's avatar
Elliot Lee committed
306 307 308
   *  not have a window. (Which will be indicated by the
   *  GTK_NO_WINDOW flag being set).
   */
Tim Janik's avatar
Tim Janik committed
309
  GdkWindow *GSEAL (window);
310
  
311
  /* The widget's parent.
Elliot Lee's avatar
Elliot Lee committed
312
   */
Tim Janik's avatar
Tim Janik committed
313
  GtkWidget *GSEAL (parent);
Elliot Lee's avatar
Elliot Lee committed
314 315
};

316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333
/**
 * 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
334 335 336 337 338 339 340 341 342
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
343 344

  /*< public >*/
345
  
346
  guint activate_signal;
347

348
  guint set_scroll_adjustments_signal;
349

Soren Sandmann's avatar
Soren Sandmann committed
350 351
  /*< private >*/
  
Tim Janik's avatar
Tim Janik committed
352 353 354 355 356
  /* seldomly overidden */
  void (*dispatch_child_properties_changed) (GtkWidget   *widget,
					     guint        n_pspecs,
					     GParamSpec **pspecs);

Elliot Lee's avatar
Elliot Lee committed
357
  /* basics */
358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373
  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);
374 375
  void (* hierarchy_changed)   (GtkWidget        *widget,
				GtkWidget        *previous_toplevel);
376 377 378 379
  void (* style_set)	       (GtkWidget        *widget,
				GtkStyle         *previous_style);
  void (* direction_changed)   (GtkWidget        *widget,
				GtkTextDirection  previous_direction);
380 381
  void (* grab_notify)         (GtkWidget        *widget,
				gboolean          was_grabbed);
Tim Janik's avatar
Tim Janik committed
382 383
  void (* child_notify)        (GtkWidget	 *widget,
				GParamSpec       *pspec);
384
  
385
  /* Mnemonics */
386
  gboolean (* mnemonic_activate) (GtkWidget    *widget,
387 388
				  gboolean      group_cycling);
  
389
  /* explicit focus */
Tim Janik's avatar
Tim Janik committed
390
  void     (* grab_focus)      (GtkWidget        *widget);
391 392
  gboolean (* focus)           (GtkWidget        *widget,
                                GtkDirectionType  direction);
393
  
Elliot Lee's avatar
Elliot Lee committed
394
  /* events */
395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448
  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);
449
  
Elliot Lee's avatar
Elliot Lee committed
450
  /* selection */
451 452 453
  void (* selection_get)           (GtkWidget          *widget,
				    GtkSelectionData   *selection_data,
				    guint               info,
454
				    guint               time_);
455
  void (* selection_received)      (GtkWidget          *widget,
456
				    GtkSelectionData   *selection_data,
457
				    guint               time_);
458 459 460 461 462 463 464 465 466 467

  /* 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,
468
				    guint               time_);
469 470 471 472 473 474
  void (* drag_data_delete)        (GtkWidget	       *widget,
				    GdkDragContext     *context);

  /* Target side drag signals */
  void (* drag_leave)	           (GtkWidget	       *widget,
				    GdkDragContext     *context,
475
				    guint               time_);
476 477 478 479
  gboolean (* drag_motion)         (GtkWidget	       *widget,
				    GdkDragContext     *context,
				    gint                x,
				    gint                y,
480
				    guint               time_);
481 482 483 484
  gboolean (* drag_drop)           (GtkWidget	       *widget,
				    GdkDragContext     *context,
				    gint                x,
				    gint                y,
485
				    guint               time_);
486 487
  void (* drag_data_received)      (GtkWidget          *widget,
				    GdkDragContext     *context,
488 489
				    gint                x,
				    gint                y,
490 491
				    GtkSelectionData   *selection_data,
				    guint               info,
492
				    guint               time_);
Owen Taylor's avatar
Owen Taylor committed
493 494

  /* Signals used only for keybindings */
495
  gboolean (* popup_menu)          (GtkWidget          *widget);
496 497 498 499 500 501

  /* 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.
   */
502
  gboolean (* show_help)           (GtkWidget          *widget,
503
                                    GtkWidgetHelpType   help_type);
504 505 506
  
  /* accessibility support 
   */
507 508 509 510 511 512
  AtkObject*   (*get_accessible)     (GtkWidget *widget);

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

514 515 516 517
  /* Sent when a grab is broken. */
  gboolean (*grab_broken_event) (GtkWidget	     *widget,
                                 GdkEventGrabBroken  *event);

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

Kristian Rietveld's avatar
Kristian Rietveld committed
520 521 522 523 524
  gboolean     (* query_tooltip)      (GtkWidget  *widget,
				       gint        x,
				       gint        y,
				       gboolean    keyboard_tooltip,
				       GtkTooltip *tooltip);
525 526 527 528
  /* Signals without a C default handler class slot:
   * gboolean	(*damage_event)	(GtkWidget      *widget,
   *                             GdkEventExpose *event);
   */
Kristian Rietveld's avatar
Kristian Rietveld committed
529

Owen Taylor's avatar
Owen Taylor committed
530
  /* Padding for future expansion */
531 532 533
  void (*_gtk_reserved5) (void);
  void (*_gtk_reserved6) (void);
  void (*_gtk_reserved7) (void);
Elliot Lee's avatar
Elliot Lee committed
534 535 536 537
};

struct _GtkWidgetAuxInfo
{
538 539 540 541
  gint x;
  gint y;
  gint width;
  gint height;
542

543 544
  guint x_set : 1;
  guint y_set : 1;
Elliot Lee's avatar
Elliot Lee committed
545 546 547 548 549 550 551 552 553
};

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

Manish Singh's avatar
Manish Singh committed
554 555
GType	   gtk_widget_get_type		  (void) G_GNUC_CONST;
GtkWidget* gtk_widget_new		  (GType		type,
556
					   const gchar	       *first_property_name,
557
					   ...);
558 559 560
void	   gtk_widget_destroy		  (GtkWidget	       *widget);
void	   gtk_widget_destroyed		  (GtkWidget	       *widget,
					   GtkWidget	      **widget_pointer);
561 562
void	   gtk_widget_unparent		  (GtkWidget	       *widget);
void	   gtk_widget_show		  (GtkWidget	       *widget);
563
void       gtk_widget_show_now            (GtkWidget           *widget);
564 565 566
void	   gtk_widget_hide		  (GtkWidget	       *widget);
void	   gtk_widget_show_all		  (GtkWidget	       *widget);
void	   gtk_widget_hide_all		  (GtkWidget	       *widget);
567 568 569
void       gtk_widget_set_no_show_all     (GtkWidget           *widget,
					   gboolean             no_show_all);
gboolean   gtk_widget_get_no_show_all     (GtkWidget           *widget);
570 571 572 573
void	   gtk_widget_map		  (GtkWidget	       *widget);
void	   gtk_widget_unmap		  (GtkWidget	       *widget);
void	   gtk_widget_realize		  (GtkWidget	       *widget);
void	   gtk_widget_unrealize		  (GtkWidget	       *widget);
574 575

/* Queuing draws */
576
void	   gtk_widget_queue_draw	  (GtkWidget	       *widget);
577 578 579 580 581
void	   gtk_widget_queue_draw_area	  (GtkWidget	       *widget,
					   gint                 x,
					   gint                 y,
					   gint                 width,
					   gint                 height);
582
void	   gtk_widget_queue_resize	  (GtkWidget	       *widget);
Soeren Sandmann's avatar
Soeren Sandmann committed
583
void	   gtk_widget_queue_resize_no_redraw (GtkWidget *widget);
584
void	   gtk_widget_size_request	  (GtkWidget	       *widget,
Elliot Lee's avatar
Elliot Lee committed
585
					   GtkRequisition      *requisition);
586
void	   gtk_widget_size_allocate	  (GtkWidget	       *widget,
Elliot Lee's avatar
Elliot Lee committed
587
					   GtkAllocation       *allocation);
588 589
void       gtk_widget_get_child_requisition (GtkWidget	       *widget,
					     GtkRequisition    *requisition);
Tim Janik's avatar
Tim Janik committed
590 591 592 593
void	   gtk_widget_add_accelerator	  (GtkWidget           *widget,
					   const gchar         *accel_signal,
					   GtkAccelGroup       *accel_group,
					   guint                accel_key,
594
					   GdkModifierType      accel_mods,
Tim Janik's avatar
Tim Janik committed
595
					   GtkAccelFlags        accel_flags);
596
gboolean   gtk_widget_remove_accelerator  (GtkWidget           *widget,
Tim Janik's avatar
Tim Janik committed
597 598
					   GtkAccelGroup       *accel_group,
					   guint                accel_key,
599
					   GdkModifierType      accel_mods);
600
void       gtk_widget_set_accel_path      (GtkWidget           *widget,
601 602
					   const gchar         *accel_path,
					   GtkAccelGroup       *accel_group);
603 604
const gchar* _gtk_widget_get_accel_path   (GtkWidget           *widget,
					   gboolean	       *locked);
605
GList*     gtk_widget_list_accel_closures (GtkWidget	       *widget);
606 607
gboolean   gtk_widget_can_activate_accel  (GtkWidget           *widget,
                                           guint                signal_id);
608
gboolean   gtk_widget_mnemonic_activate   (GtkWidget           *widget,
609
					   gboolean             group_cycling);
610
gboolean   gtk_widget_event		  (GtkWidget	       *widget,
611
					   GdkEvent	       *event);
612 613
gint       gtk_widget_send_expose         (GtkWidget           *widget,
					   GdkEvent            *event);
614 615
gboolean   gtk_widget_send_focus_change   (GtkWidget           *widget,
                                           GdkEvent            *event);
616

617 618 619 620
gboolean   gtk_widget_activate		     (GtkWidget	       *widget);
gboolean   gtk_widget_set_scroll_adjustments (GtkWidget        *widget,
					      GtkAdjustment    *hadjustment,
					      GtkAdjustment    *vadjustment);
621
     
622 623
void	   gtk_widget_reparent		  (GtkWidget	       *widget,
					   GtkWidget	       *new_parent);
624
gboolean   gtk_widget_intersect		  (GtkWidget	       *widget,
625
					   const GdkRectangle  *area,
626
					   GdkRectangle	       *intersection);
627 628
cairo_region_t *gtk_widget_region_intersect	  (GtkWidget	       *widget,
					   const cairo_region_t     *region);
629

Tim Janik's avatar
Tim Janik committed
630 631 632 633 634
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);

635 636 637
void       gtk_widget_set_can_focus       (GtkWidget           *widget,
                                           gboolean             can_focus);
gboolean   gtk_widget_get_can_focus       (GtkWidget           *widget);
638
gboolean   gtk_widget_has_focus           (GtkWidget           *widget);
639
gboolean   gtk_widget_is_focus            (GtkWidget           *widget);
640 641 642 643 644 645 646
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);
647

648 649 650 651
void      gtk_widget_set_receives_default (GtkWidget           *widget,
                                           gboolean             receives_default);
gboolean  gtk_widget_get_receives_default (GtkWidget           *widget);

652 653
gboolean   gtk_widget_has_grab            (GtkWidget           *widget);

654 655 656 657
gboolean   gtk_widget_device_is_shadowed  (GtkWidget           *widget,
                                           GdkDevice           *device);


658 659 660
void                  gtk_widget_set_name               (GtkWidget    *widget,
							 const gchar  *name);
G_CONST_RETURN gchar* gtk_widget_get_name               (GtkWidget    *widget);
661

662 663
void                  gtk_widget_set_state              (GtkWidget    *widget,
							 GtkStateType  state);
664
GtkStateType          gtk_widget_get_state              (GtkWidget    *widget);
665

666 667
void                  gtk_widget_set_sensitive          (GtkWidget    *widget,
							 gboolean      sensitive);
668 669 670
gboolean              gtk_widget_get_sensitive          (GtkWidget    *widget);
gboolean              gtk_widget_is_sensitive           (GtkWidget    *widget);

671 672 673 674
void                  gtk_widget_set_visible            (GtkWidget    *widget,
                                                         gboolean      visible);
gboolean              gtk_widget_get_visible            (GtkWidget    *widget);

675 676 677 678
void                  gtk_widget_set_has_window         (GtkWidget    *widget,
                                                         gboolean      has_window);
gboolean              gtk_widget_get_has_window         (GtkWidget    *widget);

679 680
gboolean              gtk_widget_is_toplevel            (GtkWidget    *widget);
gboolean              gtk_widget_is_drawable            (GtkWidget    *widget);
681 682 683 684 685 686 687
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);

688 689
void                  gtk_widget_set_app_paintable      (GtkWidget    *widget,
							 gboolean      app_paintable);
690 691
gboolean              gtk_widget_get_app_paintable      (GtkWidget    *widget);

692 693
void                  gtk_widget_set_double_buffered    (GtkWidget    *widget,
							 gboolean      double_buffered);
694 695
gboolean              gtk_widget_get_double_buffered    (GtkWidget    *widget);

696 697
void                  gtk_widget_set_redraw_on_allocate (GtkWidget    *widget,
							 gboolean      redraw_on_allocate);
698

699 700
void                  gtk_widget_set_parent             (GtkWidget    *widget,
							 GtkWidget    *parent);
701
GtkWidget           * gtk_widget_get_parent             (GtkWidget    *widget);
702

703 704
void                  gtk_widget_set_parent_window      (GtkWidget    *widget,
							 GdkWindow    *parent_window);
705
GdkWindow           * gtk_widget_get_parent_window      (GtkWidget    *widget);
706

707 708 709
void                  gtk_widget_set_child_visible      (GtkWidget    *widget,
							 gboolean      is_visible);
gboolean              gtk_widget_get_child_visible      (GtkWidget    *widget);
710 711 712 713

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

715 716
void                  gtk_widget_get_allocation         (GtkWidget     *widget,
                                                         GtkAllocation *allocation);
717 718
void                  gtk_widget_set_allocation         (GtkWidget     *widget,
                                                         const GtkAllocation *allocation);
719

720 721 722
void                  gtk_widget_get_requisition        (GtkWidget     *widget,
                                                         GtkRequisition *requisition);

723 724
gboolean   gtk_widget_child_focus         (GtkWidget           *widget,
                                           GtkDirectionType     direction);
725 726 727
gboolean   gtk_widget_keynav_failed       (GtkWidget           *widget,
                                           GtkDirectionType     direction);
void       gtk_widget_error_bell          (GtkWidget           *widget);
Havoc Pennington's avatar
Havoc Pennington committed
728 729 730 731 732 733 734

void       gtk_widget_set_size_request    (GtkWidget           *widget,
                                           gint                 width,
                                           gint                 height);
void       gtk_widget_get_size_request    (GtkWidget           *widget,
                                           gint                *width,
                                           gint                *height);
735 736
void	   gtk_widget_set_events	  (GtkWidget	       *widget,
					   gint			events);
737 738
void       gtk_widget_add_events          (GtkWidget           *widget,
					   gint	                events);
739 740 741 742 743 744
void	   gtk_widget_set_device_events	  (GtkWidget	       *widget,
                                           GdkDevice           *device,
					   GdkEventMask		events);
void       gtk_widget_add_device_events   (GtkWidget           *widget,
                                           GdkDevice           *device,
					   GdkEventMask         events);
745 746
void	   gtk_widget_set_extension_events (GtkWidget		*widget,
					    GdkExtensionMode	mode);
Elliot Lee's avatar
Elliot Lee committed
747

748 749 750
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
751
					 GType		 widget_type);
752 753
GdkColormap* gtk_widget_get_colormap	(GtkWidget	*widget);
GdkVisual*   gtk_widget_get_visual	(GtkWidget	*widget);
754

755 756 757 758 759 760 761
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);
762 763
GdkPixmap *   gtk_widget_get_snapshot    (GtkWidget    *widget,
                                          GdkRectangle *clip_rect);
764

765 766 767 768 769
/* Multidevice support */
gboolean         gtk_widget_get_support_multidevice (GtkWidget      *widget);
void             gtk_widget_set_support_multidevice (GtkWidget      *widget,
                                                     gboolean        support_multidevice);

770 771 772
/* Accessibility support */
AtkObject*       gtk_widget_get_accessible               (GtkWidget          *widget);

773 774 775 776 777 778 779 780 781
/* 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);

782
gint	     gtk_widget_get_events	(GtkWidget	*widget);
783 784
GdkEventMask gtk_widget_get_device_events (GtkWidget	*widget,
                                           GdkDevice    *device);
785 786 787 788
void	     gtk_widget_get_pointer	(GtkWidget	*widget,
					 gint		*x,
					 gint		*y);

789
gboolean     gtk_widget_is_ancestor	(GtkWidget	*widget,
790 791
					 GtkWidget	*ancestor);

792 793 794 795 796 797 798
gboolean     gtk_widget_translate_coordinates (GtkWidget  *src_widget,
					       GtkWidget  *dest_widget,
					       gint        src_x,
					       gint        src_y,
					       gint       *dest_x,
					       gint       *dest_y);

799 800
/* Hide widget and return TRUE.
 */
801
gboolean     gtk_widget_hide_on_delete	(GtkWidget	*widget);
802

803 804
/* Widget styles.
 */
805
void        gtk_widget_style_attach       (GtkWidget            *widget);
806 807 808 809 810 811

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);
812

813 814 815 816 817
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,
818
					   const GdkColor       *color);
819 820
void        gtk_widget_modify_bg          (GtkWidget            *widget,
					   GtkStateType          state,
821
					   const GdkColor       *color);
822 823
void        gtk_widget_modify_text        (GtkWidget            *widget,
					   GtkStateType          state,
824
					   const GdkColor       *color);
825 826
void        gtk_widget_modify_base        (GtkWidget            *widget,
					   GtkStateType          state,
827
					   const GdkColor       *color);
828 829 830
void        gtk_widget_modify_cursor      (GtkWidget            *widget,
					   const GdkColor       *primary,
					   const GdkColor       *secondary);
831 832
void        gtk_widget_modify_font        (GtkWidget            *widget,
					   PangoFontDescription *font_desc);
833 834 835
void        gtk_widget_modify_symbolic_color (GtkWidget         *widget,
                                           const gchar          *name,
                                           const GdkColor       *color);
836

837 838 839 840
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);
841

842 843
GdkPixbuf    *gtk_widget_render_icon          (GtkWidget   *widget,
                                               const gchar *stock_id,
844
                                               GtkIconSize  size,
845
                                               const gchar *detail);
846

847 848 849 850
/* handle composite names for GTK_COMPOSITE_CHILD widgets,
 * the returned name is newly allocated.
 */
void   gtk_widget_set_composite_name	(GtkWidget	*widget,
Owen Taylor's avatar
Owen Taylor committed
851
					 const gchar   	*name);
852 853
gchar* gtk_widget_get_composite_name	(GtkWidget	*widget);
     
854 855 856
/* Descend recursively and set rc-style on all widgets without user styles */
void       gtk_widget_reset_rc_styles   (GtkWidget      *widget);

857 858 859 860
/* Push/pop pairs, to change default values upon a widget's creation.
 * This will override the values that got set by the
 * gtk_widget_set_default_* () functions.
 */
861 862 863 864
void	     gtk_widget_push_colormap	     (GdkColormap *cmap);
void	     gtk_widget_push_composite_child (void);
void	     gtk_widget_pop_composite_child  (void);
void	     gtk_widget_pop_colormap	     (void);
Elliot Lee's avatar
Elliot Lee committed
865

866 867
/* widget style properties
 */
Tim Janik's avatar
Tim Janik committed
868
void gtk_widget_class_install_style_property        (GtkWidgetClass     *klass,
869
						     GParamSpec         *pspec);
Tim Janik's avatar
Tim Janik committed
870
void gtk_widget_class_install_style_property_parser (GtkWidgetClass     *klass,
871 872
						     GParamSpec         *pspec,
						     GtkRcPropertyParser parser);
873 874 875 876
GParamSpec*  gtk_widget_class_find_style_property   (GtkWidgetClass     *klass,
						     const gchar        *property_name);
GParamSpec** gtk_widget_class_list_style_properties (GtkWidgetClass     *klass,
						     guint              *n_properties);
877 878 879 880 881 882 883 884
void gtk_widget_style_get_property (GtkWidget	     *widget,
				    const gchar    *property_name,
				    GValue	     *value);
void gtk_widget_style_get_valist   (GtkWidget	     *widget,
				    const gchar    *first_property_name,
				    va_list         var_args);
void gtk_widget_style_get          (GtkWidget	     *widget,
				    const gchar    *first_property_name,
885
				    ...) G_GNUC_NULL_TERMINATED;
886 887


888 889
/* Set certain default values to be used at widget creation time.
 */
890
void	     gtk_widget_set_default_colormap (GdkColormap *colormap);
891
GtkStyle*    gtk_widget_get_default_style    (void);
892
#ifndef GDK_MULTIHEAD_SAFE
Elliot Lee's avatar
Elliot Lee committed
893 894
GdkColormap* gtk_widget_get_default_colormap (void);
GdkVisual*   gtk_widget_get_default_visual   (void);
895
#endif
Elliot Lee's avatar
Elliot Lee committed
896

897 898 899 900 901 902 903 904 905 906
/* Functions for setting directionality for widgets
 */

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

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

Søren Sandmann's avatar
Søren Sandmann committed
907 908 909
/* Compositing manager functionality */
gboolean gtk_widget_is_composited (GtkWidget *widget);

910
/* Counterpart to gdk_window_shape_combine_mask.
Elliot Lee's avatar
Elliot Lee committed
911
 */
912
void	     gtk_widget_shape_combine_mask (GtkWidget *widget,
Elliot Lee's avatar
Elliot Lee committed
913 914 915
					    GdkBitmap *shape_mask,
					    gint       offset_x,
					    gint       offset_y);
916 917 918 919
void	     gtk_widget_input_shape_combine_mask (GtkWidget *widget,
						  GdkBitmap *shape_mask,
						  gint       offset_x,
						  gint       offset_y);
Elliot Lee's avatar
Elliot Lee committed
920

921 922 923
/* internal function */
void	     gtk_widget_reset_shapes	   (GtkWidget *widget);

Tim Janik's avatar
Tim Janik committed
924 925 926 927 928 929 930 931 932 933 934 935
/* Compute a widget's path in the form "GtkWindow.MyLabel", and
 * return newly alocated strings.
 */
void	     gtk_widget_path		   (GtkWidget *widget,
					    guint     *path_length,
					    gchar    **path,
					    gchar    **path_reversed);
void	     gtk_widget_class_path	   (GtkWidget *widget,
					    guint     *path_length,
					    gchar    **path,
					    gchar    **path_reversed);

Owen Taylor's avatar
Owen Taylor committed
936
GList* gtk_widget_list_mnemonic_labels  (GtkWidget *widget);
937 938 939 940 941
void   gtk_widget_add_mnemonic_label    (GtkWidget *widget,
					 GtkWidget *label);
void   gtk_widget_remove_mnemonic_label (GtkWidget *widget,
					 GtkWidget *label);

942 943 944 945 946 947 948 949 950 951
void                  gtk_widget_set_tooltip_window    (GtkWidget   *widget,
                                                        GtkWindow   *custom_window);
GtkWindow *gtk_widget_get_tooltip_window    (GtkWidget   *widget);
void       gtk_widget_trigger_tooltip_query (GtkWidget   *widget);
void       gtk_widget_set_tooltip_text      (GtkWidget   *widget,
                                             const gchar *text);
gchar *    gtk_widget_get_tooltip_text      (GtkWidget   *widget);
void       gtk_widget_set_tooltip_markup    (GtkWidget   *widget,
                                             const gchar *markup);
gchar *    gtk_widget_get_tooltip_markup    (GtkWidget   *widget);
952 953 954
void       gtk_widget_set_has_tooltip       (GtkWidget   *widget,
					     gboolean     has_tooltip);
gboolean   gtk_widget_get_has_tooltip       (GtkWidget   *widget);
Kristian Rietveld's avatar
Kristian Rietveld committed
955

Matthias Clasen's avatar
Matthias Clasen committed
956
GType           gtk_requisition_get_type (void) G_GNUC_CONST;
957
GtkRequisition *gtk_requisition_new      (void) G_GNUC_MALLOC;
958 959
GtkRequisition *gtk_requisition_copy     (const GtkRequisition *requisition);
void            gtk_requisition_free     (GtkRequisition       *requisition);
960

961 962
void              _gtk_widget_set_has_default             (GtkWidget    *widget,
                                                           gboolean      has_default);
963 964
void              _gtk_widget_set_has_grab                (GtkWidget    *widget,
                                                           gboolean      has_grab);
965 966 967
void              _gtk_widget_set_is_toplevel             (GtkWidget    *widget,
                                                           gboolean      is_toplevel);

968 969
void              _gtk_widget_grab_notify                 (GtkWidget    *widget,
						           gboolean	was_grabbed);
970

971 972 973 974
GtkWidgetAuxInfo *_gtk_widget_get_aux_info                (GtkWidget    *widget,
							   gboolean      create);
void              _gtk_widget_propagate_hierarchy_changed (GtkWidget    *widget,
							   GtkWidget    *previous_toplevel);
Owen Taylor's avatar
Owen Taylor committed
975 976
void              _gtk_widget_propagate_screen_changed    (GtkWidget    *widget,
							   GdkScreen    *previous_screen);
Søren Sandmann's avatar
Søren Sandmann committed
977
void		  _gtk_widget_propagate_composited_changed (GtkWidget    *widget);
978

979 980
void	   _gtk_widget_set_device_window   (GtkWidget      *widget,
                                            GdkDevice      *device,
981
					    GdkWindow      *pointer_window);
982 983 984 985
GdkWindow *_gtk_widget_get_device_window   (GtkWidget      *widget,
                                            GdkDevice      *device);
GList *    _gtk_widget_list_devices        (GtkWidget      *widget);

986 987
void       _gtk_widget_synthesize_crossing (GtkWidget      *from,
					    GtkWidget      *to,
988
                                            GdkDevice      *device,
989 990
					    GdkCrossingMode mode);

991 992
GdkColormap* _gtk_widget_peek_colormap (void);

993 994 995 996
void         _gtk_widget_buildable_finish_accelerator (GtkWidget *widget,
						       GtkWidget *toplevel,
						       gpointer   user_data);

Matthias Clasen's avatar
Matthias Clasen committed
997
G_END_DECLS
Elliot Lee's avatar
Elliot Lee committed
998 999

#endif /* __GTK_WIDGET_H__ */