diff --git a/gtk/gtkmain.c b/gtk/gtkmain.c index 4d549e1ea4..8bb10a28ac 100644 --- a/gtk/gtkmain.c +++ b/gtk/gtkmain.c @@ -125,7 +125,6 @@ #include "gtkrecentmanager.h" #include "gtksettingsprivate.h" #include "gtktooltipprivate.h" -#include "gtkversion.h" #include "gtkwidgetprivate.h" #include "gtkwindowprivate.h" #include "gtkwindowgroup.h" @@ -186,148 +185,6 @@ static const GdkDebugKey gtk_debug_keys[] = { }; #endif /* G_ENABLE_DEBUG */ -/** - * gtk_get_major_version: - * - * Returns the major version number of the GTK library. - * (e.g. in GTK version 3.1.5 this is 3.) - * - * This function is in the library, so it represents the GTK library - * your code is running against. Contrast with the #GTK_MAJOR_VERSION - * macro, which represents the major version of the GTK headers you - * have included when compiling your code. - * - * Returns: the major version number of the GTK library - */ -guint -gtk_get_major_version (void) -{ - return GTK_MAJOR_VERSION; -} - -/** - * gtk_get_minor_version: - * - * Returns the minor version number of the GTK library. - * (e.g. in GTK version 3.1.5 this is 1.) - * - * This function is in the library, so it represents the GTK library - * your code is are running against. Contrast with the - * #GTK_MINOR_VERSION macro, which represents the minor version of the - * GTK headers you have included when compiling your code. - * - * Returns: the minor version number of the GTK library - */ -guint -gtk_get_minor_version (void) -{ - return GTK_MINOR_VERSION; -} - -/** - * gtk_get_micro_version: - * - * Returns the micro version number of the GTK library. - * (e.g. in GTK version 3.1.5 this is 5.) - * - * This function is in the library, so it represents the GTK library - * your code is are running against. Contrast with the - * #GTK_MICRO_VERSION macro, which represents the micro version of the - * GTK headers you have included when compiling your code. - * - * Returns: the micro version number of the GTK library - */ -guint -gtk_get_micro_version (void) -{ - return GTK_MICRO_VERSION; -} - -/** - * gtk_get_binary_age: - * - * Returns the binary age as passed to `libtool` - * when building the GTK library the process is running against. - * If `libtool` means nothing to you, don't - * worry about it. - * - * Returns: the binary age of the GTK library - */ -guint -gtk_get_binary_age (void) -{ - return GTK_BINARY_AGE; -} - -/** - * gtk_get_interface_age: - * - * Returns the interface age as passed to `libtool` - * when building the GTK library the process is running against. - * If `libtool` means nothing to you, don't - * worry about it. - * - * Returns: the interface age of the GTK library - */ -guint -gtk_get_interface_age (void) -{ - return GTK_INTERFACE_AGE; -} - -/** - * gtk_check_version: - * @required_major: the required major version - * @required_minor: the required minor version - * @required_micro: the required micro version - * - * Checks that the GTK library in use is compatible with the - * given version. Generally you would pass in the constants - * #GTK_MAJOR_VERSION, #GTK_MINOR_VERSION, #GTK_MICRO_VERSION - * as the three arguments to this function; that produces - * a check that the library in use is compatible with - * the version of GTK the application or module was compiled - * against. - * - * Compatibility is defined by two things: first the version - * of the running library is newer than the version - * @required_major.required_minor.@required_micro. Second - * the running library must be binary compatible with the - * version @required_major.required_minor.@required_micro - * (same major version.) - * - * This function is primarily for GTK modules; the module - * can call this function to check that it wasn’t loaded - * into an incompatible version of GTK. However, such a - * check isn’t completely reliable, since the module may be - * linked against an old version of GTK and calling the - * old version of gtk_check_version(), but still get loaded - * into an application using a newer version of GTK. - * - * Returns: (nullable): %NULL if the GTK library is compatible with the - * given version, or a string describing the version mismatch. - * The returned string is owned by GTK and should not be modified - * or freed. - */ -const char * -gtk_check_version (guint required_major, - guint required_minor, - guint required_micro) -{ - int gtk_effective_micro = 100 * GTK_MINOR_VERSION + GTK_MICRO_VERSION; - int required_effective_micro = 100 * required_minor + required_micro; - - if (required_major > GTK_MAJOR_VERSION) - return "GTK version too old (major mismatch)"; - if (required_major < GTK_MAJOR_VERSION) - return "GTK version too new (major mismatch)"; - if (required_effective_micro < gtk_effective_micro - GTK_BINARY_AGE) - return "GTK version too new (micro mismatch)"; - if (required_effective_micro > gtk_effective_micro) - return "GTK version too old (micro mismatch)"; - return NULL; -} - /* This checks to see if the process is running suid or sgid * at the current time. If so, we don’t allow GTK to be initialized. * This is meant to be a mild check - we only error out if we diff --git a/gtk/gtkmain.h b/gtk/gtkmain.h index 9191011ec9..ba8c42db71 100644 --- a/gtk/gtkmain.h +++ b/gtk/gtkmain.h @@ -50,25 +50,6 @@ G_BEGIN_DECLS */ #define GTK_PRIORITY_RESIZE (G_PRIORITY_HIGH_IDLE + 10) -/* GTK+ version - */ -GDK_AVAILABLE_IN_ALL -guint gtk_get_major_version (void) G_GNUC_CONST; -GDK_AVAILABLE_IN_ALL -guint gtk_get_minor_version (void) G_GNUC_CONST; -GDK_AVAILABLE_IN_ALL -guint gtk_get_micro_version (void) G_GNUC_CONST; -GDK_AVAILABLE_IN_ALL -guint gtk_get_binary_age (void) G_GNUC_CONST; -GDK_AVAILABLE_IN_ALL -guint gtk_get_interface_age (void) G_GNUC_CONST; - -GDK_AVAILABLE_IN_ALL -const char * gtk_check_version (guint required_major, - guint required_minor, - guint required_micro); - - /* Initialization, exit, mainloop and miscellaneous routines */ @@ -101,11 +82,11 @@ gboolean gtk_init_check_abi_check (int num_checks, #endif GDK_AVAILABLE_IN_ALL -void gtk_disable_setlocale (void); +void gtk_disable_setlocale (void); GDK_AVAILABLE_IN_ALL -PangoLanguage *gtk_get_default_language (void); +PangoLanguage * gtk_get_default_language (void); GDK_AVAILABLE_IN_ALL -GtkTextDirection gtk_get_locale_direction (void); +GtkTextDirection gtk_get_locale_direction (void); G_END_DECLS diff --git a/gtk/gtkversion.c b/gtk/gtkversion.c new file mode 100644 index 0000000000..eab7146140 --- /dev/null +++ b/gtk/gtkversion.c @@ -0,0 +1,179 @@ +/* GTK - The GIMP Toolkit + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see . + */ + +/* + * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GTK+ Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GTK+ at ftp://ftp.gtk.org/pub/gtk/. + */ + +#include "config.h" + +#include "gtkversion.h" + +/** + * SECTION:gtkfeatures + * @Short_description: Variables and functions to check the GTK version + * @Title: Version Information + * + * GTK provides version information, primarily useful in configure checks + * for builds that have a configure script. Applications will not typically + * use the features described here. + */ + +/** + * gtk_get_major_version: + * + * Returns the major version number of the GTK library. + * (e.g. in GTK version 3.1.5 this is 3.) + * + * This function is in the library, so it represents the GTK library + * your code is running against. Contrast with the #GTK_MAJOR_VERSION + * macro, which represents the major version of the GTK headers you + * have included when compiling your code. + * + * Returns: the major version number of the GTK library + */ +guint +gtk_get_major_version (void) +{ + return GTK_MAJOR_VERSION; +} + +/** + * gtk_get_minor_version: + * + * Returns the minor version number of the GTK library. + * (e.g. in GTK version 3.1.5 this is 1.) + * + * This function is in the library, so it represents the GTK library + * your code is are running against. Contrast with the + * #GTK_MINOR_VERSION macro, which represents the minor version of the + * GTK headers you have included when compiling your code. + * + * Returns: the minor version number of the GTK library + */ +guint +gtk_get_minor_version (void) +{ + return GTK_MINOR_VERSION; +} + +/** + * gtk_get_micro_version: + * + * Returns the micro version number of the GTK library. + * (e.g. in GTK version 3.1.5 this is 5.) + * + * This function is in the library, so it represents the GTK library + * your code is are running against. Contrast with the + * #GTK_MICRO_VERSION macro, which represents the micro version of the + * GTK headers you have included when compiling your code. + * + * Returns: the micro version number of the GTK library + */ +guint +gtk_get_micro_version (void) +{ + return GTK_MICRO_VERSION; +} + +/** + * gtk_get_binary_age: + * + * Returns the binary age as passed to `libtool` + * when building the GTK library the process is running against. + * If `libtool` means nothing to you, don't + * worry about it. + * + * Returns: the binary age of the GTK library + */ +guint +gtk_get_binary_age (void) +{ + return GTK_BINARY_AGE; +} + +/** + * gtk_get_interface_age: + * + * Returns the interface age as passed to `libtool` + * when building the GTK library the process is running against. + * If `libtool` means nothing to you, don't + * worry about it. + * + * Returns: the interface age of the GTK library + */ +guint +gtk_get_interface_age (void) +{ + return GTK_INTERFACE_AGE; +} + +/** + * gtk_check_version: + * @required_major: the required major version + * @required_minor: the required minor version + * @required_micro: the required micro version + * + * Checks that the GTK library in use is compatible with the + * given version. Generally you would pass in the constants + * #GTK_MAJOR_VERSION, #GTK_MINOR_VERSION, #GTK_MICRO_VERSION + * as the three arguments to this function; that produces + * a check that the library in use is compatible with + * the version of GTK the application or module was compiled + * against. + * + * Compatibility is defined by two things: first the version + * of the running library is newer than the version + * @required_major.required_minor.@required_micro. Second + * the running library must be binary compatible with the + * version @required_major.required_minor.@required_micro + * (same major version.) + * + * This function is primarily for GTK modules; the module + * can call this function to check that it wasn’t loaded + * into an incompatible version of GTK. However, such a + * check isn’t completely reliable, since the module may be + * linked against an old version of GTK and calling the + * old version of gtk_check_version(), but still get loaded + * into an application using a newer version of GTK. + * + * Returns: (nullable): %NULL if the GTK library is compatible with the + * given version, or a string describing the version mismatch. + * The returned string is owned by GTK and should not be modified + * or freed. + */ +const char * +gtk_check_version (guint required_major, + guint required_minor, + guint required_micro) +{ + int gtk_effective_micro = 100 * GTK_MINOR_VERSION + GTK_MICRO_VERSION; + int required_effective_micro = 100 * required_minor + required_micro; + + if (required_major > GTK_MAJOR_VERSION) + return "GTK version too old (major mismatch)"; + if (required_major < GTK_MAJOR_VERSION) + return "GTK version too new (major mismatch)"; + if (required_effective_micro < gtk_effective_micro - GTK_BINARY_AGE) + return "GTK version too new (micro mismatch)"; + if (required_effective_micro > gtk_effective_micro) + return "GTK version too old (micro mismatch)"; + return NULL; +} diff --git a/gtk/gtkversion.h.in b/gtk/gtkversion.h.in index 1db6d4686c..a8d3729d23 100644 --- a/gtk/gtkversion.h.in +++ b/gtk/gtkversion.h.in @@ -29,15 +29,9 @@ #ifndef __GTK_VERSION_H__ #define __GTK_VERSION_H__ -/** - * SECTION:gtkfeatures - * @Short_description: Variables and functions to check the GTK version - * @Title: Version Information - * - * GTK provides version information, primarily useful in configure checks - * for builds that have a configure script. Applications will not typically - * use the features described here. - */ +#include + +G_BEGIN_DECLS /** * GTK_MAJOR_VERSION: @@ -101,4 +95,22 @@ (GTK_MAJOR_VERSION == (major) && GTK_MINOR_VERSION == (minor) && \ GTK_MICRO_VERSION >= (micro))) +GDK_AVAILABLE_IN_ALL +guint gtk_get_major_version (void) G_GNUC_CONST; +GDK_AVAILABLE_IN_ALL +guint gtk_get_minor_version (void) G_GNUC_CONST; +GDK_AVAILABLE_IN_ALL +guint gtk_get_micro_version (void) G_GNUC_CONST; +GDK_AVAILABLE_IN_ALL +guint gtk_get_binary_age (void) G_GNUC_CONST; +GDK_AVAILABLE_IN_ALL +guint gtk_get_interface_age (void) G_GNUC_CONST; + +GDK_AVAILABLE_IN_ALL +const char * gtk_check_version (guint required_major, + guint required_minor, + guint required_micro); + +G_END_DECLS + #endif /* __GTK_VERSION_H__ */ diff --git a/gtk/meson.build b/gtk/meson.build index 0581349041..3554c1b2f1 100644 --- a/gtk/meson.build +++ b/gtk/meson.build @@ -421,6 +421,7 @@ gtk_public_sources = files([ 'gtktreestore.c', 'gtktreeview.c', 'gtktreeviewcolumn.c', + 'gtkversion.c', 'gtkvideo.c', 'gtkviewport.c', 'gtkvolumebutton.c',