source: trunk/third/gtk/gtk/gtkwidget.h @ 15781

Revision 15781, 24.5 KB checked in by ghudson, 24 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r15780, which included commits to RCS files with non-trunk default branches.
Line 
1/* GTK - The GIMP Toolkit
2 * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Library General Public
6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 * Library General Public License for more details.
13 *
14 * You should have received a copy of the GNU Library General Public
15 * License along with this library; if not, write to the
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17 * Boston, MA 02111-1307, USA.
18 */
19
20/*
21 * Modified by the GTK+ Team and others 1997-1999.  See the AUTHORS
22 * file for a list of people on the GTK+ Team.  See the ChangeLog
23 * files for a list of changes.  These files are distributed with
24 * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
25 */
26
27#ifndef __GTK_WIDGET_H__
28#define __GTK_WIDGET_H__
29
30#include <gdk/gdk.h>
31#include <gtk/gtkaccelgroup.h>
32#include <gtk/gtkobject.h>
33#include <gtk/gtkadjustment.h>
34#include <gtk/gtkstyle.h>
35
36
37#ifdef __cplusplus
38extern "C" {
39#endif /* __cplusplus */
40
41
42/* The flags that are used by GtkWidget on top of the
43 * flags field of GtkObject.
44 */
45typedef enum
46{
47  GTK_TOPLEVEL         = 1 << 4,
48  GTK_NO_WINDOW        = 1 << 5,
49  GTK_REALIZED         = 1 << 6,
50  GTK_MAPPED           = 1 << 7,
51  GTK_VISIBLE          = 1 << 8,
52  GTK_SENSITIVE        = 1 << 9,
53  GTK_PARENT_SENSITIVE = 1 << 10,
54  GTK_CAN_FOCUS        = 1 << 11,
55  GTK_HAS_FOCUS        = 1 << 12,
56 
57  /* widget is allowed to receive the default via gtk_widget_grab_default
58   * and will reserve space to draw the default if possible */
59  GTK_CAN_DEFAULT      = 1 << 13,
60
61  /* the widget currently is receiving the default action and should be drawn
62   * appropriately if possible */
63  GTK_HAS_DEFAULT      = 1 << 14,
64
65  GTK_HAS_GRAB         = 1 << 15,
66  GTK_RC_STYLE         = 1 << 16,
67  GTK_COMPOSITE_CHILD  = 1 << 17,
68  GTK_NO_REPARENT      = 1 << 18,
69  GTK_APP_PAINTABLE    = 1 << 19,
70 
71  /* the widget when focused will receive the default action and have
72   * HAS_DEFAULT set even if there is a different widget set as default */
73  GTK_RECEIVES_DEFAULT = 1 << 20
74} GtkWidgetFlags;
75
76/* Macro for casting a pointer to a GtkWidget or GtkWidgetClass pointer.
77 * Macros for testing whether `widget' or `klass' are of type GTK_TYPE_WIDGET.
78 */
79#define GTK_TYPE_WIDGET                   (gtk_widget_get_type ())
80#define GTK_WIDGET(widget)                (GTK_CHECK_CAST ((widget), GTK_TYPE_WIDGET, GtkWidget))
81#define GTK_WIDGET_CLASS(klass)           (GTK_CHECK_CLASS_CAST ((klass), GTK_TYPE_WIDGET, GtkWidgetClass))
82#define GTK_IS_WIDGET(widget)             (GTK_CHECK_TYPE ((widget), GTK_TYPE_WIDGET))
83#define GTK_IS_WIDGET_CLASS(klass)        (GTK_CHECK_CLASS_TYPE ((klass), GTK_TYPE_WIDGET))
84
85/* Macros for extracting various fields from GtkWidget and GtkWidgetClass.
86 */
87#define GTK_WIDGET_TYPE(wid)              (GTK_OBJECT_TYPE (wid))
88#define GTK_WIDGET_STATE(wid)             (GTK_WIDGET (wid)->state)
89#define GTK_WIDGET_SAVED_STATE(wid)       (GTK_WIDGET (wid)->saved_state)
90
91/* Macros for extracting the widget flags from GtkWidget.
92 */
93#define GTK_WIDGET_FLAGS(wid)             (GTK_OBJECT_FLAGS (wid))
94#define GTK_WIDGET_TOPLEVEL(wid)          ((GTK_WIDGET_FLAGS (wid) & GTK_TOPLEVEL) != 0)
95#define GTK_WIDGET_NO_WINDOW(wid)         ((GTK_WIDGET_FLAGS (wid) & GTK_NO_WINDOW) != 0)
96#define GTK_WIDGET_REALIZED(wid)          ((GTK_WIDGET_FLAGS (wid) & GTK_REALIZED) != 0)
97#define GTK_WIDGET_MAPPED(wid)            ((GTK_WIDGET_FLAGS (wid) & GTK_MAPPED) != 0)
98#define GTK_WIDGET_VISIBLE(wid)           ((GTK_WIDGET_FLAGS (wid) & GTK_VISIBLE) != 0)
99#define GTK_WIDGET_DRAWABLE(wid)          (GTK_WIDGET_VISIBLE (wid) && GTK_WIDGET_MAPPED (wid))
100#define GTK_WIDGET_SENSITIVE(wid)         ((GTK_WIDGET_FLAGS (wid) & GTK_SENSITIVE) != 0)
101#define GTK_WIDGET_PARENT_SENSITIVE(wid)  ((GTK_WIDGET_FLAGS (wid) & GTK_PARENT_SENSITIVE) != 0)
102#define GTK_WIDGET_IS_SENSITIVE(wid)      (GTK_WIDGET_SENSITIVE (wid) && \
103                                           GTK_WIDGET_PARENT_SENSITIVE (wid))
104#define GTK_WIDGET_CAN_FOCUS(wid)         ((GTK_WIDGET_FLAGS (wid) & GTK_CAN_FOCUS) != 0)
105#define GTK_WIDGET_HAS_FOCUS(wid)         ((GTK_WIDGET_FLAGS (wid) & GTK_HAS_FOCUS) != 0)
106#define GTK_WIDGET_CAN_DEFAULT(wid)       ((GTK_WIDGET_FLAGS (wid) & GTK_CAN_DEFAULT) != 0)
107#define GTK_WIDGET_HAS_DEFAULT(wid)       ((GTK_WIDGET_FLAGS (wid) & GTK_HAS_DEFAULT) != 0)
108#define GTK_WIDGET_HAS_GRAB(wid)          ((GTK_WIDGET_FLAGS (wid) & GTK_HAS_GRAB) != 0)
109#define GTK_WIDGET_RC_STYLE(wid)          ((GTK_WIDGET_FLAGS (wid) & GTK_RC_STYLE) != 0)
110#define GTK_WIDGET_COMPOSITE_CHILD(wid)   ((GTK_WIDGET_FLAGS (wid) & GTK_COMPOSITE_CHILD) != 0)
111#define GTK_WIDGET_APP_PAINTABLE(wid)     ((GTK_WIDGET_FLAGS (wid) & GTK_APP_PAINTABLE) != 0)
112#define GTK_WIDGET_RECEIVES_DEFAULT(wid)  ((GTK_WIDGET_FLAGS (wid) & GTK_RECEIVES_DEFAULT) != 0)
113 
114/* Macros for setting and clearing widget flags.
115 */
116#define GTK_WIDGET_SET_FLAGS(wid,flag)    G_STMT_START{ (GTK_WIDGET_FLAGS (wid) |= (flag)); }G_STMT_END
117#define GTK_WIDGET_UNSET_FLAGS(wid,flag)  G_STMT_START{ (GTK_WIDGET_FLAGS (wid) &= ~(flag)); }G_STMT_END
118 
119 
120 
121typedef struct _GtkRequisition    GtkRequisition;
122typedef struct _GtkAllocation     GtkAllocation;
123typedef struct _GtkSelectionData GtkSelectionData;
124typedef struct _GtkWidgetClass    GtkWidgetClass;
125typedef struct _GtkWidgetAuxInfo  GtkWidgetAuxInfo;
126typedef struct _GtkWidgetShapeInfo GtkWidgetShapeInfo;
127
128typedef void (*GtkCallback) (GtkWidget *widget,
129                             gpointer   data);
130
131/* A requisition is a desired amount of space which a
132 *  widget may request.
133 */
134struct _GtkRequisition
135{
136  gint16 width;
137  gint16 height;
138};
139
140/* An allocation is a size and position. Where a widget
141 *  can ask for a desired size, it is actually given
142 *  this amount of space at the specified position.
143 */
144struct _GtkAllocation
145{
146  gint16 x;
147  gint16 y;
148  guint16 width;
149  guint16 height;
150};
151
152/* The contents of a selection are returned in a GtkSelectionData
153   structure. selection/target identify the request.
154   type specifies the type of the return; if length < 0, and
155   the data should be ignored. This structure has object semantics -
156   no fields should be modified directly, they should not be created
157   directly, and pointers to them should not be stored beyond the duration of
158   a callback. (If the last is changed, we'll need to add reference
159   counting.) The time field gives the timestamp at which the data was sent. */
160
161struct _GtkSelectionData
162{
163  GdkAtom selection;
164  GdkAtom target;
165  GdkAtom type;
166  gint    format;
167  guchar *data;
168  gint    length;
169};
170
171/* The widget is the base of the tree for displayable objects.
172 *  (A displayable object is one which takes up some amount
173 *  of screen real estate). It provides a common base and interface
174 *  which actual widgets must adhere to.
175 */
176struct _GtkWidget
177{
178  /* The object structure needs to be the first
179   *  element in the widget structure in order for
180   *  the object mechanism to work correctly. This
181   *  allows a GtkWidget pointer to be cast to a
182   *  GtkObject pointer.
183   */
184  GtkObject object;
185 
186  /* 16 bits of internally used private flags.
187   * this will be packed into the same 4 byte alignment frame that
188   * state and saved_state go. we therefore don't waste any new
189   * space on this.
190   */
191  guint16 private_flags;
192 
193  /* The state of the widget. There are actually only
194   *  5 widget states (defined in "gtkenums.h").
195   */
196  guint8 state;
197 
198  /* The saved state of the widget. When a widgets state
199   *  is changed to GTK_STATE_INSENSITIVE via
200   *  "gtk_widget_set_state" or "gtk_widget_set_sensitive"
201   *  the old state is kept around in this field. The state
202   *  will be restored once the widget gets sensitive again.
203   */
204  guint8 saved_state;
205 
206  /* The widgets name. If the widget does not have a name
207   *  (the name is NULL), then its name (as returned by
208   *  "gtk_widget_get_name") is its classes name.
209   * Among other things, the widget name is used to determine
210   *  the style to use for a widget.
211   */
212  gchar *name;
213 
214  /* The style for the widget. The style contains the
215   *  colors the widget should be drawn in for each state
216   *  along with graphics contexts used to draw with and
217   *  the font to use for text.
218   */
219  GtkStyle *style;
220 
221  /* The widgets desired size.
222   */
223  GtkRequisition requisition;
224 
225  /* The widgets allocated size.
226   */
227  GtkAllocation allocation;
228 
229  /* The widgets window or its parent window if it does
230   *  not have a window. (Which will be indicated by the
231   *  GTK_NO_WINDOW flag being set).
232   */
233  GdkWindow *window;
234 
235  /* The widgets parent.
236   */
237  GtkWidget *parent;
238};
239
240struct _GtkWidgetClass
241{
242  /* The object class structure needs to be the first
243   *  element in the widget class structure in order for
244   *  the class mechanism to work correctly. This allows a
245   *  GtkWidgetClass pointer to be cast to a GtkObjectClass
246   *  pointer.
247   */
248  GtkObjectClass parent_class;
249 
250  /* The signal to emit when a widget of this class is activated,
251   * gtk_widget_activate() handles the emission.
252   * Implementation of this signal is optional.
253   */
254  guint activate_signal;
255
256  /* This signal is emitted  when a widget of this class is added
257   * to a scrolling aware parent, gtk_widget_set_scroll_adjustments()
258   * handles the emission.
259   * Implementation of this signal is optional.
260   */
261  guint set_scroll_adjustments_signal;
262 
263  /* basics */
264  void (* show)                (GtkWidget      *widget);
265  void (* show_all)            (GtkWidget      *widget);
266  void (* hide)                (GtkWidget      *widget);
267  void (* hide_all)            (GtkWidget      *widget);
268  void (* map)                 (GtkWidget      *widget);
269  void (* unmap)               (GtkWidget      *widget);
270  void (* realize)             (GtkWidget      *widget);
271  void (* unrealize)           (GtkWidget      *widget);
272  void (* draw)                (GtkWidget      *widget,
273                                GdkRectangle   *area);
274  void (* draw_focus)          (GtkWidget      *widget);
275  void (* draw_default)        (GtkWidget      *widget);
276  void (* size_request)        (GtkWidget      *widget,
277                                GtkRequisition *requisition);
278  void (* size_allocate)       (GtkWidget      *widget,
279                                GtkAllocation  *allocation);
280  void (* state_changed)       (GtkWidget      *widget,
281                                GtkStateType    previous_state);
282  void (* parent_set)          (GtkWidget      *widget,
283                                GtkWidget      *previous_parent);
284  void (* style_set)           (GtkWidget      *widget,
285                                GtkStyle       *previous_style);
286 
287  /* accelerators */
288  gint (* add_accelerator)     (GtkWidget      *widget,
289                                guint           accel_signal_id,
290                                GtkAccelGroup  *accel_group,
291                                guint           accel_key,
292                                GdkModifierType accel_mods,
293                                GtkAccelFlags   accel_flags);
294  void (* remove_accelerator)  (GtkWidget      *widget,
295                                GtkAccelGroup  *accel_group,
296                                guint           accel_key,
297                                GdkModifierType accel_mods);
298
299  /* explicit focus */
300  void (* grab_focus)          (GtkWidget      *widget);
301 
302  /* events */
303  gint (* event)                   (GtkWidget          *widget,
304                                    GdkEvent           *event);
305  gint (* button_press_event)      (GtkWidget          *widget,
306                                    GdkEventButton     *event);
307  gint (* button_release_event)    (GtkWidget          *widget,
308                                    GdkEventButton     *event);
309  gint (* motion_notify_event)     (GtkWidget          *widget,
310                                    GdkEventMotion     *event);
311  gint (* delete_event)            (GtkWidget          *widget,
312                                    GdkEventAny        *event);
313  gint (* destroy_event)           (GtkWidget          *widget,
314                                    GdkEventAny        *event);
315  gint (* expose_event)            (GtkWidget          *widget,
316                                    GdkEventExpose     *event);
317  gint (* key_press_event)         (GtkWidget          *widget,
318                                    GdkEventKey        *event);
319  gint (* key_release_event)       (GtkWidget          *widget,
320                                    GdkEventKey        *event);
321  gint (* enter_notify_event)      (GtkWidget          *widget,
322                                    GdkEventCrossing   *event);
323  gint (* leave_notify_event)      (GtkWidget          *widget,
324                                    GdkEventCrossing   *event);
325  gint (* configure_event)         (GtkWidget          *widget,
326                                    GdkEventConfigure  *event);
327  gint (* focus_in_event)          (GtkWidget          *widget,
328                                    GdkEventFocus      *event);
329  gint (* focus_out_event)         (GtkWidget          *widget,
330                                    GdkEventFocus      *event);
331  gint (* map_event)               (GtkWidget          *widget,
332                                    GdkEventAny        *event);
333  gint (* unmap_event)             (GtkWidget          *widget,
334                                    GdkEventAny        *event);
335  gint (* property_notify_event)   (GtkWidget          *widget,
336                                    GdkEventProperty   *event);
337  gint (* selection_clear_event)   (GtkWidget          *widget,
338                                    GdkEventSelection  *event);
339  gint (* selection_request_event) (GtkWidget          *widget,
340                                    GdkEventSelection  *event);
341  gint (* selection_notify_event)  (GtkWidget          *widget,
342                                    GdkEventSelection  *event);
343  gint (* proximity_in_event)      (GtkWidget          *widget,
344                                    GdkEventProximity  *event);
345  gint (* proximity_out_event)     (GtkWidget          *widget,
346                                    GdkEventProximity  *event);
347  gint (* visibility_notify_event)  (GtkWidget         *widget,
348                                     GdkEventVisibility *event);
349  gint (* client_event)            (GtkWidget          *widget,
350                                    GdkEventClient     *event);
351  gint (* no_expose_event)         (GtkWidget          *widget,
352                                    GdkEventAny        *event);
353
354  /* selection */
355  void (* selection_get)           (GtkWidget          *widget,
356                                    GtkSelectionData   *selection_data,
357                                    guint               info,
358                                    guint               time);
359  void (* selection_received)      (GtkWidget          *widget,
360                                    GtkSelectionData   *selection_data,
361                                    guint               time);
362
363  /* Source side drag signals */
364  void (* drag_begin)              (GtkWidget          *widget,
365                                    GdkDragContext     *context);
366  void (* drag_end)                (GtkWidget          *widget,
367                                    GdkDragContext     *context);
368  void (* drag_data_get)           (GtkWidget          *widget,
369                                    GdkDragContext     *context,
370                                    GtkSelectionData   *selection_data,
371                                    guint               info,
372                                    guint               time);
373  void (* drag_data_delete)        (GtkWidget          *widget,
374                                    GdkDragContext     *context);
375
376  /* Target side drag signals */
377  void (* drag_leave)              (GtkWidget          *widget,
378                                    GdkDragContext     *context,
379                                    guint               time);
380  gboolean (* drag_motion)         (GtkWidget          *widget,
381                                    GdkDragContext     *context,
382                                    gint                x,
383                                    gint                y,
384                                    guint               time);
385  gboolean (* drag_drop)           (GtkWidget          *widget,
386                                    GdkDragContext     *context,
387                                    gint                x,
388                                    gint                y,
389                                    guint               time);
390  void (* drag_data_received)      (GtkWidget          *widget,
391                                    GdkDragContext     *context,
392                                    gint                x,
393                                    gint                y,
394                                    GtkSelectionData   *selection_data,
395                                    guint               info,
396                                    guint               time);
397 
398  /* action signals */
399  void (* debug_msg)               (GtkWidget          *widget,
400                                    const gchar        *string);
401
402  /* Padding for future expandsion */
403  GtkFunction pad1;
404  GtkFunction pad2;
405  GtkFunction pad3;
406  GtkFunction pad4;
407};
408
409struct _GtkWidgetAuxInfo
410{
411  gint16  x;
412  gint16  y;
413  gint16 width;
414  gint16 height;
415};
416
417struct _GtkWidgetShapeInfo
418{
419  gint16     offset_x;
420  gint16     offset_y;
421  GdkBitmap *shape_mask;
422};
423
424
425GtkType    gtk_widget_get_type            (void);
426GtkWidget* gtk_widget_new                 (GtkType              type,
427                                           const gchar         *first_arg_name,
428                                           ...);
429GtkWidget* gtk_widget_newv                (GtkType              type,
430                                           guint                nargs,
431                                           GtkArg              *args);
432void       gtk_widget_ref                 (GtkWidget           *widget);
433void       gtk_widget_unref               (GtkWidget           *widget);
434void       gtk_widget_destroy             (GtkWidget           *widget);
435void       gtk_widget_destroyed           (GtkWidget           *widget,
436                                           GtkWidget          **widget_pointer);
437void       gtk_widget_get                 (GtkWidget           *widget,
438                                           GtkArg              *arg);
439void       gtk_widget_getv                (GtkWidget           *widget,
440                                           guint                nargs,
441                                           GtkArg              *args);
442void       gtk_widget_set                 (GtkWidget           *widget,
443                                           const gchar         *first_arg_name,
444                                           ...);
445void       gtk_widget_setv                (GtkWidget           *widget,
446                                           guint                nargs,
447                                           GtkArg              *args);
448void       gtk_widget_unparent            (GtkWidget           *widget);
449void       gtk_widget_show                (GtkWidget           *widget);
450void       gtk_widget_show_now            (GtkWidget           *widget);
451void       gtk_widget_hide                (GtkWidget           *widget);
452void       gtk_widget_show_all            (GtkWidget           *widget);
453void       gtk_widget_hide_all            (GtkWidget           *widget);
454void       gtk_widget_map                 (GtkWidget           *widget);
455void       gtk_widget_unmap               (GtkWidget           *widget);
456void       gtk_widget_realize             (GtkWidget           *widget);
457void       gtk_widget_unrealize           (GtkWidget           *widget);
458
459/* Queuing draws */
460void       gtk_widget_queue_draw          (GtkWidget           *widget);
461void       gtk_widget_queue_draw_area     (GtkWidget           *widget,
462                                           gint                 x,
463                                           gint                 y,
464                                           gint                 width,
465                                           gint                 height);
466void       gtk_widget_queue_clear         (GtkWidget           *widget);
467void       gtk_widget_queue_clear_area    (GtkWidget           *widget,
468                                           gint                 x,
469                                           gint                 y,
470                                           gint                 width,
471                                           gint                 height);
472
473
474void       gtk_widget_queue_resize        (GtkWidget           *widget);
475void       gtk_widget_draw                (GtkWidget           *widget,
476                                           GdkRectangle        *area);
477void       gtk_widget_draw_focus          (GtkWidget           *widget);
478void       gtk_widget_draw_default        (GtkWidget           *widget);
479void       gtk_widget_size_request        (GtkWidget           *widget,
480                                           GtkRequisition      *requisition);
481void       gtk_widget_size_allocate       (GtkWidget           *widget,
482                                           GtkAllocation       *allocation);
483void       gtk_widget_get_child_requisition (GtkWidget         *widget,
484                                             GtkRequisition    *requisition);
485void       gtk_widget_add_accelerator     (GtkWidget           *widget,
486                                           const gchar         *accel_signal,
487                                           GtkAccelGroup       *accel_group,
488                                           guint                accel_key,
489                                           guint                accel_mods,
490                                           GtkAccelFlags        accel_flags);
491void       gtk_widget_remove_accelerator  (GtkWidget           *widget,
492                                           GtkAccelGroup       *accel_group,
493                                           guint                accel_key,
494                                           guint                accel_mods);
495void       gtk_widget_remove_accelerators (GtkWidget           *widget,
496                                           const gchar         *accel_signal,
497                                           gboolean             visible_only);
498guint      gtk_widget_accelerator_signal  (GtkWidget           *widget,
499                                           GtkAccelGroup       *accel_group,
500                                           guint                accel_key,
501                                           guint                accel_mods);
502void       gtk_widget_lock_accelerators   (GtkWidget           *widget);
503void       gtk_widget_unlock_accelerators (GtkWidget           *widget);
504gboolean   gtk_widget_accelerators_locked (GtkWidget           *widget);
505gint       gtk_widget_event               (GtkWidget           *widget,
506                                           GdkEvent            *event);
507
508gboolean   gtk_widget_activate               (GtkWidget        *widget);
509gboolean   gtk_widget_set_scroll_adjustments (GtkWidget        *widget,
510                                              GtkAdjustment    *hadjustment,
511                                              GtkAdjustment    *vadjustment);
512     
513void       gtk_widget_reparent            (GtkWidget           *widget,
514                                           GtkWidget           *new_parent);
515void       gtk_widget_popup               (GtkWidget           *widget,
516                                           gint                 x,
517                                           gint                 y);
518gint       gtk_widget_intersect           (GtkWidget           *widget,
519                                           GdkRectangle        *area,
520                                           GdkRectangle        *intersection);
521
522void       gtk_widget_grab_focus          (GtkWidget           *widget);
523void       gtk_widget_grab_default        (GtkWidget           *widget);
524
525void       gtk_widget_set_name            (GtkWidget           *widget,
526                                           const gchar         *name);
527gchar*     gtk_widget_get_name            (GtkWidget           *widget);
528void       gtk_widget_set_state           (GtkWidget           *widget,
529                                           GtkStateType         state);
530void       gtk_widget_set_sensitive       (GtkWidget           *widget,
531                                           gboolean             sensitive);
532void       gtk_widget_set_app_paintable   (GtkWidget           *widget,
533                                           gboolean             app_paintable);
534void       gtk_widget_set_parent          (GtkWidget           *widget,
535                                           GtkWidget           *parent);
536void       gtk_widget_set_parent_window   (GtkWidget           *widget,
537                                           GdkWindow           *parent_window);
538GdkWindow *gtk_widget_get_parent_window   (GtkWidget           *widget);
539void       gtk_widget_set_uposition       (GtkWidget           *widget,
540                                           gint                 x,
541                                           gint                 y);
542void       gtk_widget_set_usize           (GtkWidget           *widget,
543                                           gint                 width,
544                                           gint                 height);
545void       gtk_widget_set_events          (GtkWidget           *widget,
546                                           gint                 events);
547void       gtk_widget_add_events          (GtkWidget           *widget,
548                                           gint                 events);
549void       gtk_widget_set_extension_events (GtkWidget           *widget,
550                                            GdkExtensionMode    mode);
551
552GdkExtensionMode gtk_widget_get_extension_events (GtkWidget     *widget);
553GtkWidget*   gtk_widget_get_toplevel    (GtkWidget      *widget);
554GtkWidget*   gtk_widget_get_ancestor    (GtkWidget      *widget,
555                                         GtkType        widget_type);
556GdkColormap* gtk_widget_get_colormap    (GtkWidget      *widget);
557GdkVisual*   gtk_widget_get_visual      (GtkWidget      *widget);
558
559/* The following functions must not be called on an already
560 * realized widget. Because it is possible that somebody
561 * can call get_colormap() or get_visual() and save the
562 * result, these functions are probably only safe to
563 * call in a widget's init() function.
564 */
565void         gtk_widget_set_colormap    (GtkWidget      *widget,
566                                         GdkColormap    *colormap);
567void         gtk_widget_set_visual      (GtkWidget      *widget,
568                                         GdkVisual      *visual);
569
570
571gint         gtk_widget_get_events      (GtkWidget      *widget);
572void         gtk_widget_get_pointer     (GtkWidget      *widget,
573                                         gint           *x,
574                                         gint           *y);
575
576gboolean     gtk_widget_is_ancestor     (GtkWidget      *widget,
577                                         GtkWidget      *ancestor);
578
579/* Hide widget and return TRUE.
580 */
581gint       gtk_widget_hide_on_delete    (GtkWidget      *widget);
582
583/* Widget styles.
584 */
585void       gtk_widget_set_style         (GtkWidget      *widget,
586                                         GtkStyle       *style);
587void       gtk_widget_set_rc_style      (GtkWidget      *widget);
588void       gtk_widget_ensure_style      (GtkWidget      *widget);
589GtkStyle*  gtk_widget_get_style         (GtkWidget      *widget);
590void       gtk_widget_restore_default_style (GtkWidget  *widget);
591
592void       gtk_widget_modify_style      (GtkWidget      *widget,
593                                         GtkRcStyle     *style);
594
595/* handle composite names for GTK_COMPOSITE_CHILD widgets,
596 * the returned name is newly allocated.
597 */
598void   gtk_widget_set_composite_name    (GtkWidget      *widget,
599                                         const gchar    *name);
600gchar* gtk_widget_get_composite_name    (GtkWidget      *widget);
601     
602/* Descend recursively and set rc-style on all widgets without user styles */
603void       gtk_widget_reset_rc_styles   (GtkWidget      *widget);
604
605/* Push/pop pairs, to change default values upon a widget's creation.
606 * This will override the values that got set by the
607 * gtk_widget_set_default_* () functions.
608 */
609void         gtk_widget_push_style           (GtkStyle   *style);
610void         gtk_widget_push_colormap        (GdkColormap *cmap);
611void         gtk_widget_push_visual          (GdkVisual  *visual);
612void         gtk_widget_push_composite_child (void);
613void         gtk_widget_pop_composite_child  (void);
614void         gtk_widget_pop_style            (void);
615void         gtk_widget_pop_colormap         (void);
616void         gtk_widget_pop_visual           (void);
617
618/* Set certain default values to be used at widget creation time.
619 */
620void         gtk_widget_set_default_style    (GtkStyle    *style);
621void         gtk_widget_set_default_colormap (GdkColormap *colormap);
622void         gtk_widget_set_default_visual   (GdkVisual   *visual);
623GtkStyle*    gtk_widget_get_default_style    (void);
624GdkColormap* gtk_widget_get_default_colormap (void);
625GdkVisual*   gtk_widget_get_default_visual   (void);
626
627/* Counterpart to gdk_window_shape_combine_mask.
628 */
629void         gtk_widget_shape_combine_mask (GtkWidget *widget,
630                                            GdkBitmap *shape_mask,
631                                            gint       offset_x,
632                                            gint       offset_y);
633
634/* internal function */
635void         gtk_widget_reset_shapes       (GtkWidget *widget);
636
637/* Compute a widget's path in the form "GtkWindow.MyLabel", and
638 * return newly alocated strings.
639 */
640void         gtk_widget_path               (GtkWidget *widget,
641                                            guint     *path_length,
642                                            gchar    **path,
643                                            gchar    **path_reversed);
644void         gtk_widget_class_path         (GtkWidget *widget,
645                                            guint     *path_length,
646                                            gchar    **path,
647                                            gchar    **path_reversed);
648
649#if     defined (GTK_TRACE_OBJECTS) && defined (__GNUC__)
650#  define gtk_widget_ref gtk_object_ref
651#  define gtk_widget_unref gtk_object_unref
652#endif  /* GTK_TRACE_OBJECTS && __GNUC__ */
653
654
655
656#ifdef __cplusplus
657}
658#endif /* __cplusplus */
659
660
661#endif /* __GTK_WIDGET_H__ */
Note: See TracBrowser for help on using the repository browser.