1 /* GTK - The GIMP Toolkit
2 * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser 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.
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 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library. If not, see <http://www.gnu.org/licenses/>.
19 * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
20 * file for a list of people on the GTK+ Team. See the ChangeLog
21 * files for a list of changes. These files are distributed with
22 * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
25 #ifndef __GTK_WIDGET_PRIVATE_H__
26 #define __GTK_WIDGET_PRIVATE_H__
28 #include "gtkcsstypesprivate.h"
29 #include "gtkwidget.h"
30 #include "gactionmuxer.h"
34 /* Cache as many ranges of height-for-width
35 * (or width-for-height) as can be rational
36 * for a said widget to have, if a label can
37 * only wrap to 3 lines, only 3 caches will
38 * ever be allocated for it.
40 #define GTK_SIZE_REQUEST_CACHED_SIZES (5)
49 gint lower_for_size; /* The minimum for_size with the same result */
50 gint upper_for_size; /* The maximum for_size with the same result */
51 CachedSize cached_size;
56 SizeRequest **heights;
58 CachedSize cached_width;
59 CachedSize cached_height;
61 guint cached_widths : 3;
62 guint cached_heights : 3;
63 guint last_cached_width : 3;
64 guint last_cached_height : 3;
65 guint cached_base_width : 1;
66 guint cached_base_height : 1;
69 void _gtk_widget_set_visible_flag (GtkWidget *widget,
71 gboolean _gtk_widget_get_in_reparent (GtkWidget *widget);
72 void _gtk_widget_set_in_reparent (GtkWidget *widget,
73 gboolean in_reparent);
74 gboolean _gtk_widget_get_anchored (GtkWidget *widget);
75 void _gtk_widget_set_anchored (GtkWidget *widget,
77 gboolean _gtk_widget_get_shadowed (GtkWidget *widget);
78 void _gtk_widget_set_shadowed (GtkWidget *widget,
80 gboolean _gtk_widget_get_alloc_needed (GtkWidget *widget);
81 void _gtk_widget_set_alloc_needed (GtkWidget *widget,
82 gboolean alloc_needed);
83 gboolean _gtk_widget_get_width_request_needed (GtkWidget *widget);
84 void _gtk_widget_set_width_request_needed (GtkWidget *widget,
85 gboolean width_request_needed);
86 gboolean _gtk_widget_get_height_request_needed (GtkWidget *widget);
87 void _gtk_widget_set_height_request_needed (GtkWidget *widget,
88 gboolean height_request_needed);
90 gboolean _gtk_widget_get_sizegroup_visited (GtkWidget *widget);
91 void _gtk_widget_set_sizegroup_visited (GtkWidget *widget,
93 void _gtk_widget_add_sizegroup (GtkWidget *widget,
95 void _gtk_widget_remove_sizegroup (GtkWidget *widget,
97 GSList *_gtk_widget_get_sizegroups (GtkWidget *widget);
99 void _gtk_widget_add_attached_window (GtkWidget *widget,
101 void _gtk_widget_remove_attached_window (GtkWidget *widget,
104 void _gtk_widget_override_size_request (GtkWidget *widget,
109 void _gtk_widget_restore_size_request (GtkWidget *widget,
112 void _gtk_widget_compute_size_for_orientation (GtkWidget *widget,
113 GtkSizeGroupMode orientation,
114 gboolean ignore_size_groups,
119 gboolean _gtk_widget_get_translation_to_window (GtkWidget *widget,
123 void _gtk_widget_free_cached_sizes (GtkWidget *widget);
125 const gchar* _gtk_widget_get_accel_path (GtkWidget *widget,
128 AtkObject * _gtk_widget_peek_accessible (GtkWidget *widget);
130 GdkEventExpose * _gtk_cairo_get_event (cairo_t *cr);
132 void _gtk_widget_draw_internal (GtkWidget *widget,
134 gboolean clip_to_size);
135 void _gtk_widget_set_has_default (GtkWidget *widget,
136 gboolean has_default);
137 void _gtk_widget_set_has_grab (GtkWidget *widget,
139 void _gtk_widget_set_is_toplevel (GtkWidget *widget,
140 gboolean is_toplevel);
142 void _gtk_widget_grab_notify (GtkWidget *widget,
143 gboolean was_grabbed);
145 void _gtk_widget_propagate_hierarchy_changed (GtkWidget *widget,
146 GtkWidget *previous_toplevel);
147 void _gtk_widget_propagate_screen_changed (GtkWidget *widget,
148 GdkScreen *previous_screen);
149 void _gtk_widget_propagate_composited_changed (GtkWidget *widget);
151 void _gtk_widget_set_device_window (GtkWidget *widget,
153 GdkWindow *pointer_window);
154 GdkWindow * _gtk_widget_get_device_window (GtkWidget *widget,
156 GList * _gtk_widget_list_devices (GtkWidget *widget);
158 void _gtk_widget_synthesize_crossing (GtkWidget *from,
161 GdkCrossingMode mode);
163 gpointer _gtk_widget_peek_request_cache (GtkWidget *widget);
165 void _gtk_widget_buildable_finish_accelerator (GtkWidget *widget,
168 GtkStyle * _gtk_widget_get_style (GtkWidget *widget);
169 void _gtk_widget_set_style (GtkWidget *widget,
172 typedef gboolean (*GtkCapturedEventHandler) (GtkWidget *widget, GdkEvent *event);
174 void _gtk_widget_set_captured_event_handler (GtkWidget *widget,
175 GtkCapturedEventHandler handler);
177 gboolean _gtk_widget_captured_event (GtkWidget *widget,
180 GtkWidgetPath * _gtk_widget_create_path (GtkWidget *widget);
181 void _gtk_widget_invalidate_style_context (GtkWidget *widget,
182 GtkCssChange change);
183 void _gtk_widget_style_context_invalidated (GtkWidget *widget);
185 void _gtk_widget_update_parent_muxer (GtkWidget *widget);
186 GActionMuxer * _gtk_widget_get_action_muxer (GtkWidget *widget);
190 #endif /* __GTK_WIDGET_PRIVATE_H__ */