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 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.
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 * Lesser General Public License for more details.
13 *
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/>.
16 */
17
18/*
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/.
23 */
24
25#ifndef __GTK_PRIVATE_H__
26#define __GTK_PRIVATE_H__
27
28#include <glib-object.h>
29#include <gdk/gdk.h>
30#include <gdk/gdk-private.h>
31
32#include "gtkcsstypesprivate.h"
33#include "gtktexthandleprivate.h"
34#include "gtkplacessidebarprivate.h"
35#include "gtkeventcontrollerprivate.h"
36#include "gtkwindowgroup.h"
37
38G_BEGIN_DECLS
39
40#define GTK_PARAM_READABLE G_PARAM_READABLE|G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB
41#define GTK_PARAM_WRITABLE G_PARAM_WRITABLE|G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB
42#define GTK_PARAM_READWRITE G_PARAM_READWRITE|G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB
43
44#define OPPOSITE_ORIENTATION(_orientation) (1 - (_orientation))
45
46#ifndef G_ENABLE_CONSISTENCY_CHECKS
47/* This is true for buildtypes release and debugoptimized */
48#define gtk_internal_return_if_fail(__expr) G_STMT_START{ (void)0; }G_STMT_END
49#define gtk_internal_return_val_if_fail(__expr, __val) G_STMT_START{ (void)0; }G_STMT_END
50#else
51/* This is true for debug builds */
52#define gtk_internal_return_if_fail(__expr) g_return_if_fail(__expr)
53#define gtk_internal_return_val_if_fail(__expr, __val) g_return_val_if_fail(__expr, __val)
54#endif
55
56const char * _gtk_get_datadir (void);
57const char * _gtk_get_libdir (void);
58const char * _gtk_get_sysconfdir (void);
59const char * _gtk_get_localedir (void);
60const char * _gtk_get_data_prefix (void);
61
62gboolean _gtk_fnmatch (const char *pattern,
63 const char *string,
64 gboolean no_leading_period,
65 gboolean casefold);
66
67char * _gtk_make_ci_glob_pattern (const char *pattern);
68
69
70char * _gtk_get_lc_ctype (void);
71
72void _gtk_ensure_resources (void);
73
74void gtk_main_sync (void);
75
76GtkWidget * gtk_window_group_get_current_grab (GtkWindowGroup *window_group);
77void gtk_grab_add (GtkWidget *widget);
78void gtk_grab_remove (GtkWidget *widget);
79
80gboolean _gtk_boolean_handled_accumulator (GSignalInvocationHint *ihint,
81 GValue *return_accu,
82 const GValue *handler_return,
83 gpointer dummy);
84
85gboolean _gtk_single_string_accumulator (GSignalInvocationHint *ihint,
86 GValue *return_accu,
87 const GValue *handler_return,
88 gpointer dummy);
89
90gboolean gtk_propagate_event_internal (GtkWidget *widget,
91 GdkEvent *event,
92 GtkWidget *topmost);
93gboolean gtk_propagate_event (GtkWidget *widget,
94 GdkEvent *event);
95void gtk_main_do_event (GdkEvent *event);
96
97GtkWidget *gtk_get_event_widget (GdkEvent *event);
98
99guint32 gtk_get_current_event_time (void);
100
101void check_crossing_invariants (GtkWidget *widget,
102 GtkCrossingData *crossing);
103
104double _gtk_get_slowdown (void);
105void _gtk_set_slowdown (double slowdown_factor);
106
107char *gtk_get_portal_request_path (GDBusConnection *connection,
108 char **token);
109char *gtk_get_portal_session_path (GDBusConnection *connection,
110 char **token);
111guint gtk_get_portal_interface_version (GDBusConnection *connection,
112 const char *interface_name);
113
114#define PORTAL_BUS_NAME "org.freedesktop.portal.Desktop"
115#define PORTAL_OBJECT_PATH "/org/freedesktop/portal/desktop"
116#define PORTAL_REQUEST_INTERFACE "org.freedesktop.portal.Request"
117#define PORTAL_SESSION_INTERFACE "org.freedesktop.portal.Session"
118#define PORTAL_FILECHOOSER_INTERFACE "org.freedesktop.portal.FileChooser"
119#define PORTAL_PRINT_INTERFACE "org.freedesktop.portal.Print"
120#define PORTAL_SCREENSHOT_INTERFACE "org.freedesktop.portal.Screenshot"
121#define PORTAL_INHIBIT_INTERFACE "org.freedesktop.portal.Inhibit"
122
123#ifdef G_OS_WIN32
124void _gtk_load_dll_with_libgtk3_manifest (const char *dllname);
125#endif
126
127gboolean gtk_simulate_touchscreen (void);
128
129void gtk_set_display_debug_flags (GdkDisplay *display,
130 guint flags);
131guint gtk_get_display_debug_flags (GdkDisplay *display);
132gboolean gtk_get_any_display_debug_flag_set (void);
133
134GBytes *get_emoji_data (void);
135
136#ifdef G_ENABLE_DEBUG
137
138#define GTK_DISPLAY_DEBUG_CHECK(display,type) (gtk_get_any_display_debug_flag_set () && G_UNLIKELY (gtk_get_display_debug_flags (display) & GTK_DEBUG_##type))
139#define GTK_DISPLAY_NOTE(display,type,action) \
140 G_STMT_START { \
141 if (GTK_DISPLAY_DEBUG_CHECK (display,type)) { action; }; \
142 } G_STMT_END
143
144#else
145
146#define GTK_DISPLAY_DEBUG_CHECK(display,type) 0
147#define GTK_DISPLAY_NOTE(display,type,action)
148
149#endif /* G_ENABLE_DEBUG */
150
151char * _gtk_elide_underscores (const char *original);
152
153void setlocale_initialization (void);
154
155void gtk_synthesize_crossing_events (GtkRoot *toplevel,
156 GtkCrossingType crossing_type,
157 GtkWidget *old_target,
158 GtkWidget *new_target,
159 double surface_x,
160 double surface_y,
161 GdkCrossingMode mode,
162 GdkDrop *drop);
163
164G_END_DECLS
165
166#endif /* __GTK_PRIVATE_H__ */
167

source code of gtk/gtk/gtkprivate.h