summaryrefslogtreecommitdiffstats
path: root/app/config
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--app/config/Makefile.am4
-rw-r--r--app/config/Makefile.in18
-rw-r--r--app/config/config-types.h2
-rw-r--r--app/config/gimpcoreconfig.c43
-rw-r--r--app/config/gimpcoreconfig.h3
-rw-r--r--app/config/gimpearlyrc.c (renamed from app/config/gimplangrc.c)172
-rw-r--r--app/config/gimpearlyrc.h71
-rw-r--r--app/config/gimplangrc.h60
-rw-r--r--app/config/gimprc-blurbs.h3
9 files changed, 251 insertions, 125 deletions
diff --git a/app/config/Makefile.am b/app/config/Makefile.am
index 04ac126..0a1266c 100644
--- a/app/config/Makefile.am
+++ b/app/config/Makefile.am
@@ -46,12 +46,12 @@ libappconfig_a_sources = \
gimpdisplayconfig.h \
gimpdisplayoptions.c \
gimpdisplayoptions.h \
+ gimpearlyrc.c \
+ gimpearlyrc.h \
gimpgeglconfig.c \
gimpgeglconfig.h \
gimpguiconfig.c \
gimpguiconfig.h \
- gimplangrc.c \
- gimplangrc.h \
gimppluginconfig.c \
gimppluginconfig.h \
gimprc.c \
diff --git a/app/config/Makefile.in b/app/config/Makefile.in
index ab37152..8caafdc 100644
--- a/app/config/Makefile.in
+++ b/app/config/Makefile.in
@@ -120,8 +120,8 @@ am__objects_1 = config-enums.$(OBJEXT)
am__objects_2 = gimpconfig-dump.$(OBJEXT) gimpconfig-file.$(OBJEXT) \
gimpconfig-utils.$(OBJEXT) gimpcoreconfig.$(OBJEXT) \
gimpdialogconfig.$(OBJEXT) gimpdisplayconfig.$(OBJEXT) \
- gimpdisplayoptions.$(OBJEXT) gimpgeglconfig.$(OBJEXT) \
- gimpguiconfig.$(OBJEXT) gimplangrc.$(OBJEXT) \
+ gimpdisplayoptions.$(OBJEXT) gimpearlyrc.$(OBJEXT) \
+ gimpgeglconfig.$(OBJEXT) gimpguiconfig.$(OBJEXT) \
gimppluginconfig.$(OBJEXT) gimprc.$(OBJEXT) \
gimprc-deserialize.$(OBJEXT) gimprc-serialize.$(OBJEXT) \
gimprc-unknown.$(OBJEXT) gimpxmlparser.$(OBJEXT)
@@ -157,9 +157,9 @@ am__depfiles_remade = ./$(DEPDIR)/config-enums.Po \
./$(DEPDIR)/gimpconfig-utils.Po ./$(DEPDIR)/gimpcoreconfig.Po \
./$(DEPDIR)/gimpdialogconfig.Po \
./$(DEPDIR)/gimpdisplayconfig.Po \
- ./$(DEPDIR)/gimpdisplayoptions.Po \
+ ./$(DEPDIR)/gimpdisplayoptions.Po ./$(DEPDIR)/gimpearlyrc.Po \
./$(DEPDIR)/gimpgeglconfig.Po ./$(DEPDIR)/gimpguiconfig.Po \
- ./$(DEPDIR)/gimplangrc.Po ./$(DEPDIR)/gimppluginconfig.Po \
+ ./$(DEPDIR)/gimppluginconfig.Po \
./$(DEPDIR)/gimprc-deserialize.Po \
./$(DEPDIR)/gimprc-serialize.Po ./$(DEPDIR)/gimprc-unknown.Po \
./$(DEPDIR)/gimprc.Po ./$(DEPDIR)/gimpxmlparser.Po \
@@ -876,12 +876,12 @@ libappconfig_a_sources = \
gimpdisplayconfig.h \
gimpdisplayoptions.c \
gimpdisplayoptions.h \
+ gimpearlyrc.c \
+ gimpearlyrc.h \
gimpgeglconfig.c \
gimpgeglconfig.h \
gimpguiconfig.c \
gimpguiconfig.h \
- gimplangrc.c \
- gimplangrc.h \
gimppluginconfig.c \
gimppluginconfig.h \
gimprc.c \
@@ -1020,9 +1020,9 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gimpdialogconfig.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gimpdisplayconfig.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gimpdisplayoptions.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gimpearlyrc.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gimpgeglconfig.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gimpguiconfig.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gimplangrc.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gimppluginconfig.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gimprc-deserialize.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gimprc-serialize.Po@am__quote@ # am--include-marker
@@ -1365,9 +1365,9 @@ distclean: distclean-am
-rm -f ./$(DEPDIR)/gimpdialogconfig.Po
-rm -f ./$(DEPDIR)/gimpdisplayconfig.Po
-rm -f ./$(DEPDIR)/gimpdisplayoptions.Po
+ -rm -f ./$(DEPDIR)/gimpearlyrc.Po
-rm -f ./$(DEPDIR)/gimpgeglconfig.Po
-rm -f ./$(DEPDIR)/gimpguiconfig.Po
- -rm -f ./$(DEPDIR)/gimplangrc.Po
-rm -f ./$(DEPDIR)/gimppluginconfig.Po
-rm -f ./$(DEPDIR)/gimprc-deserialize.Po
-rm -f ./$(DEPDIR)/gimprc-serialize.Po
@@ -1428,9 +1428,9 @@ maintainer-clean: maintainer-clean-am
-rm -f ./$(DEPDIR)/gimpdialogconfig.Po
-rm -f ./$(DEPDIR)/gimpdisplayconfig.Po
-rm -f ./$(DEPDIR)/gimpdisplayoptions.Po
+ -rm -f ./$(DEPDIR)/gimpearlyrc.Po
-rm -f ./$(DEPDIR)/gimpgeglconfig.Po
-rm -f ./$(DEPDIR)/gimpguiconfig.Po
- -rm -f ./$(DEPDIR)/gimplangrc.Po
-rm -f ./$(DEPDIR)/gimppluginconfig.Po
-rm -f ./$(DEPDIR)/gimprc-deserialize.Po
-rm -f ./$(DEPDIR)/gimprc-serialize.Po
diff --git a/app/config/config-types.h b/app/config/config-types.h
index 40b0802..1fe5594 100644
--- a/app/config/config-types.h
+++ b/app/config/config-types.h
@@ -36,7 +36,7 @@ typedef struct _GimpCoreConfig GimpCoreConfig;
typedef struct _GimpDisplayConfig GimpDisplayConfig;
typedef struct _GimpGuiConfig GimpGuiConfig;
typedef struct _GimpDialogConfig GimpDialogConfig;
-typedef struct _GimpLangRc GimpLangRc;
+typedef struct _GimpEarlyRc GimpEarlyRc;
typedef struct _GimpPluginConfig GimpPluginConfig;
typedef struct _GimpRc GimpRc;
diff --git a/app/config/gimpcoreconfig.c b/app/config/gimpcoreconfig.c
index 823e808..3e033c2 100644
--- a/app/config/gimpcoreconfig.c
+++ b/app/config/gimpcoreconfig.c
@@ -133,6 +133,9 @@ enum
PROP_LAST_RELEASE_COMMENT,
PROP_LAST_REVISION,
PROP_LAST_KNOWN_RELEASE,
+#ifdef G_OS_WIN32
+ PROP_WIN32_POINTER_INPUT_API,
+#endif
/* ignored, only for backward compatibility: */
PROP_INSTALL_COLORMAP,
@@ -815,6 +818,17 @@ gimp_core_config_class_init (GimpCoreConfigClass *klass)
#endif
GIMP_PARAM_STATIC_STRINGS);
+#ifdef G_OS_WIN32
+ GIMP_CONFIG_PROP_ENUM (object_class, PROP_WIN32_POINTER_INPUT_API,
+ "win32-pointer-input-api",
+ "Pointer Input API",
+ WIN32_POINTER_INPUT_API_BLURB,
+ GIMP_TYPE_WIN32_POINTER_INPUT_API,
+ GIMP_WIN32_POINTER_INPUT_API_WINTAB,
+ GIMP_PARAM_STATIC_STRINGS |
+ GIMP_CONFIG_PARAM_RESTART);
+#endif
+
/* only for backward compatibility: */
GIMP_CONFIG_PROP_BOOLEAN (object_class, PROP_INSTALL_COLORMAP,
"install-colormap",
@@ -1152,6 +1166,30 @@ gimp_core_config_set_property (GObject *object,
case PROP_DEBUG_POLICY:
core_config->debug_policy = g_value_get_enum (value);
break;
+#ifdef G_OS_WIN32
+ case PROP_WIN32_POINTER_INPUT_API:
+ {
+ GimpWin32PointerInputAPI api = g_value_get_enum (value);
+ gboolean have_wintab = gimp_win32_have_wintab ();
+ gboolean have_windows_ink = gimp_win32_have_windows_ink ();
+ gboolean api_is_wintab = (api == GIMP_WIN32_POINTER_INPUT_API_WINTAB);
+ gboolean api_is_windows_ink = (api == GIMP_WIN32_POINTER_INPUT_API_WINDOWS_INK);
+
+ if (api_is_wintab && !have_wintab && have_windows_ink)
+ {
+ core_config->win32_pointer_input_api = GIMP_WIN32_POINTER_INPUT_API_WINDOWS_INK;
+ }
+ else if (api_is_windows_ink && !have_windows_ink && have_wintab)
+ {
+ core_config->win32_pointer_input_api = GIMP_WIN32_POINTER_INPUT_API_WINTAB;
+ }
+ else
+ {
+ core_config->win32_pointer_input_api = api;
+ }
+ }
+ break;
+#endif
case PROP_INSTALL_COLORMAP:
case PROP_MIN_COLORS:
@@ -1378,6 +1416,11 @@ gimp_core_config_get_property (GObject *object,
case PROP_DEBUG_POLICY:
g_value_set_enum (value, core_config->debug_policy);
break;
+#ifdef G_OS_WIN32
+ case PROP_WIN32_POINTER_INPUT_API:
+ g_value_set_enum (value, core_config->win32_pointer_input_api);
+ break;
+#endif
case PROP_INSTALL_COLORMAP:
case PROP_MIN_COLORS:
diff --git a/app/config/gimpcoreconfig.h b/app/config/gimpcoreconfig.h
index f413ae4..22d2f3f 100644
--- a/app/config/gimpcoreconfig.h
+++ b/app/config/gimpcoreconfig.h
@@ -102,6 +102,9 @@ struct _GimpCoreConfig
gboolean export_metadata_xmp;
gboolean export_metadata_iptc;
GimpDebugPolicy debug_policy;
+#ifdef G_OS_WIN32
+ GimpWin32PointerInputAPI win32_pointer_input_api;
+#endif
gboolean check_updates;
gint64 check_update_timestamp;
diff --git a/app/config/gimplangrc.c b/app/config/gimpearlyrc.c
index 34e26f4..f9e83d5 100644
--- a/app/config/gimplangrc.c
+++ b/app/config/gimpearlyrc.c
@@ -1,7 +1,9 @@
/* GIMP - The GNU Image Manipulation Program
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
*
- * GimpLangRc: pre-parsing of gimprc returning the language.
+ * GimpEarlyRc: pre-parsing of gimprc suitable for use during early
+ * initialization, when the gimp singleton is not constructed yet.
+ *
* Copyright (C) 2017 Jehan <jehan@gimp.org>
*
* This program is free software: you can redistribute it and/or modify
@@ -27,7 +29,10 @@
#include "config-types.h"
-#include "gimplangrc.h"
+#include "core/core-types.h"
+#include "core/gimp-utils.h"
+
+#include "gimpearlyrc.h"
enum
{
@@ -35,39 +40,42 @@ enum
PROP_VERBOSE,
PROP_SYSTEM_GIMPRC,
PROP_USER_GIMPRC,
- PROP_LANGUAGE
+ PROP_LANGUAGE,
+#ifdef G_OS_WIN32
+ PROP_WIN32_POINTER_INPUT_API,
+#endif
};
-static void gimp_lang_rc_constructed (GObject *object);
-static void gimp_lang_rc_finalize (GObject *object);
-static void gimp_lang_rc_set_property (GObject *object,
- guint property_id,
- const GValue *value,
- GParamSpec *pspec);
-static void gimp_lang_rc_get_property (GObject *object,
- guint property_id,
- GValue *value,
- GParamSpec *pspec);
+static void gimp_early_rc_constructed (GObject *object);
+static void gimp_early_rc_finalize (GObject *object);
+static void gimp_early_rc_set_property (GObject *object,
+ guint property_id,
+ const GValue *value,
+ GParamSpec *pspec);
+static void gimp_early_rc_get_property (GObject *object,
+ guint property_id,
+ GValue *value,
+ GParamSpec *pspec);
/* Just use GimpConfig interface's default implementation which will
- * fill the PROP_LANGUAGE property. */
-G_DEFINE_TYPE_WITH_CODE (GimpLangRc, gimp_lang_rc, G_TYPE_OBJECT,
+ * fill the properties. */
+G_DEFINE_TYPE_WITH_CODE (GimpEarlyRc, gimp_early_rc, G_TYPE_OBJECT,
G_IMPLEMENT_INTERFACE (GIMP_TYPE_CONFIG, NULL))
-#define parent_class gimp_lang_rc_parent_class
+#define parent_class gimp_early_rc_parent_class
static void
-gimp_lang_rc_class_init (GimpLangRcClass *klass)
+gimp_early_rc_class_init (GimpEarlyRcClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
- object_class->constructed = gimp_lang_rc_constructed;
- object_class->finalize = gimp_lang_rc_finalize;
- object_class->set_property = gimp_lang_rc_set_property;
- object_class->get_property = gimp_lang_rc_get_property;
+ object_class->constructed = gimp_early_rc_constructed;
+ object_class->finalize = gimp_early_rc_finalize;
+ object_class->set_property = gimp_early_rc_set_property;
+ object_class->get_property = gimp_early_rc_get_property;
g_object_class_install_property (object_class, PROP_VERBOSE,
g_param_spec_boolean ("verbose",
@@ -94,21 +102,29 @@ gimp_lang_rc_class_init (GimpLangRcClass *klass)
"language", NULL, NULL, NULL,
GIMP_PARAM_STATIC_STRINGS);
+#ifdef G_OS_WIN32
+ GIMP_CONFIG_PROP_ENUM (object_class, PROP_WIN32_POINTER_INPUT_API,
+ "win32-pointer-input-api", NULL, NULL,
+ GIMP_TYPE_WIN32_POINTER_INPUT_API,
+ GIMP_WIN32_POINTER_INPUT_API_WINTAB,
+ GIMP_PARAM_STATIC_STRINGS |
+ GIMP_CONFIG_PARAM_RESTART);
+#endif
}
static void
-gimp_lang_rc_init (GimpLangRc *rc)
+gimp_early_rc_init (GimpEarlyRc *rc)
{
}
static void
-gimp_lang_rc_constructed (GObject *object)
+gimp_early_rc_constructed (GObject *object)
{
- GimpLangRc *rc = GIMP_LANG_RC (object);
- GError *error = NULL;
+ GimpEarlyRc *rc = GIMP_EARLY_RC (object);
+ GError *error = NULL;
if (rc->verbose)
- g_print ("Parsing '%s' for configured language.\n",
+ g_print ("Parsing '%s' for configuration data required during early initialization.\n",
gimp_file_get_utf8_name (rc->system_gimprc));
if (! gimp_config_deserialize_gfile (GIMP_CONFIG (rc),
@@ -121,7 +137,7 @@ gimp_lang_rc_constructed (GObject *object)
}
if (rc->verbose)
- g_print ("Parsing '%s' for configured language.\n",
+ g_print ("Parsing '%s' for configuration data required during early initialization.\n",
gimp_file_get_utf8_name (rc->user_gimprc));
if (! gimp_config_deserialize_gfile (GIMP_CONFIG (rc),
@@ -143,9 +159,9 @@ gimp_lang_rc_constructed (GObject *object)
}
static void
-gimp_lang_rc_finalize (GObject *object)
+gimp_early_rc_finalize (GObject *object)
{
- GimpLangRc *rc = GIMP_LANG_RC (object);
+ GimpEarlyRc *rc = GIMP_EARLY_RC (object);
g_clear_object (&rc->system_gimprc);
g_clear_object (&rc->user_gimprc);
@@ -156,12 +172,12 @@ gimp_lang_rc_finalize (GObject *object)
}
static void
-gimp_lang_rc_set_property (GObject *object,
- guint property_id,
- const GValue *value,
- GParamSpec *pspec)
+gimp_early_rc_set_property (GObject *object,
+ guint property_id,
+ const GValue *value,
+ GParamSpec *pspec)
{
- GimpLangRc *rc = GIMP_LANG_RC (object);
+ GimpEarlyRc *rc = GIMP_EARLY_RC (object);
switch (property_id)
{
@@ -195,6 +211,31 @@ gimp_lang_rc_set_property (GObject *object,
rc->language = g_value_dup_string (value);
break;
+#ifdef G_OS_WIN32
+ case PROP_WIN32_POINTER_INPUT_API:
+ {
+ GimpWin32PointerInputAPI api = g_value_get_enum (value);
+ gboolean have_wintab = gimp_win32_have_wintab ();
+ gboolean have_windows_ink = gimp_win32_have_windows_ink ();
+ gboolean api_is_wintab = (api == GIMP_WIN32_POINTER_INPUT_API_WINTAB);
+ gboolean api_is_windows_ink = (api == GIMP_WIN32_POINTER_INPUT_API_WINDOWS_INK);
+
+ if (api_is_wintab && !have_wintab && have_windows_ink)
+ {
+ rc->win32_pointer_input_api = GIMP_WIN32_POINTER_INPUT_API_WINDOWS_INK;
+ }
+ else if (api_is_windows_ink && !have_windows_ink && have_wintab)
+ {
+ rc->win32_pointer_input_api = GIMP_WIN32_POINTER_INPUT_API_WINTAB;
+ }
+ else
+ {
+ rc->win32_pointer_input_api = api;
+ }
+ }
+ break;
+#endif
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break;
@@ -202,12 +243,12 @@ gimp_lang_rc_set_property (GObject *object,
}
static void
-gimp_lang_rc_get_property (GObject *object,
- guint property_id,
- GValue *value,
- GParamSpec *pspec)
+gimp_early_rc_get_property (GObject *object,
+ guint property_id,
+ GValue *value,
+ GParamSpec *pspec)
{
- GimpLangRc *rc = GIMP_LANG_RC (object);
+ GimpEarlyRc *rc = GIMP_EARLY_RC (object);
switch (property_id)
{
@@ -224,6 +265,12 @@ gimp_lang_rc_get_property (GObject *object,
g_value_set_string (value, rc->language);
break;
+#ifdef G_OS_WIN32
+ case PROP_WIN32_POINTER_INPUT_API:
+ g_value_set_enum (value, rc->win32_pointer_input_api);
+ break;
+#endif
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break;
@@ -231,31 +278,31 @@ gimp_lang_rc_get_property (GObject *object,
}
/**
- * gimp_lang_rc_new:
+ * gimp_early_rc_new:
* @system_gimprc: the name of the system-wide gimprc file or %NULL to
* use the standard location
* @user_gimprc: the name of the user gimprc file or %NULL to use the
* standard location
- * @verbose: enable console messages about loading the language
+ * @verbose: enable console messages about loading the preferences
*
- * Creates a new GimpLangRc object which only looks for the configure
- * language.
+ * Creates a new GimpEarlyRc object which looks for some configuration
+ * data required in the early initialization steps
*
- * Returns: the new #GimpLangRc.
+ * Returns: the new #GimpEarlyRc.
*/
-GimpLangRc *
-gimp_lang_rc_new (GFile *system_gimprc,
- GFile *user_gimprc,
- gboolean verbose)
+GimpEarlyRc *
+gimp_early_rc_new (GFile *system_gimprc,
+ GFile *user_gimprc,
+ gboolean verbose)
{
- GimpLangRc *rc;
+ GimpEarlyRc *rc;
g_return_val_if_fail (system_gimprc == NULL || G_IS_FILE (system_gimprc),
NULL);
g_return_val_if_fail (user_gimprc == NULL || G_IS_FILE (user_gimprc),
NULL);
- rc = g_object_new (GIMP_TYPE_LANG_RC,
+ rc = g_object_new (GIMP_TYPE_EARLY_RC,
"verbose", verbose,
"system-gimprc", system_gimprc,
"user-gimprc", user_gimprc,
@@ -265,8 +312,8 @@ gimp_lang_rc_new (GFile *system_gimprc,
}
/**
- * gimp_lang_rc_get_language:
- * @lang_rc: a #GimpLangRc object.
+ * gimp_early_rc_get_language:
+ * @rc: a #GimpEarlyRc object.
*
* This function looks up the language set in `gimprc`.
*
@@ -274,7 +321,26 @@ gimp_lang_rc_new (GFile *system_gimprc,
* %NULL if the key couldn't be found.
**/
gchar *
-gimp_lang_rc_get_language (GimpLangRc *rc)
+gimp_early_rc_get_language (GimpEarlyRc *rc)
{
return rc->language ? g_strdup (rc->language) : NULL;
}
+
+#ifdef G_OS_WIN32
+
+/**
+ * gimp_early_rc_get_win32_pointer_input_api:
+ * @rc: a #GimpEarlyRc object.
+ *
+ * This function looks up the win32-specific pointer input API
+ * set in `gimprc`.
+ *
+ * Returns: the selected win32-specific pointer input API
+ **/
+GimpWin32PointerInputAPI
+gimp_early_rc_get_win32_pointer_input_api (GimpEarlyRc *rc)
+{
+ return rc->win32_pointer_input_api;
+}
+
+#endif
diff --git a/app/config/gimpearlyrc.h b/app/config/gimpearlyrc.h
new file mode 100644
index 0000000..b10835d
--- /dev/null
+++ b/app/config/gimpearlyrc.h
@@ -0,0 +1,71 @@
+/* GIMP - The GNU Image Manipulation Program
+ * Copyright (C) 1995 Spencer Kimball and Peter Mattis
+ *
+ * GimpEarlyRc: pre-parsing of gimprc suitable for use during early
+ * initialization, when the gimp singleton is not constructed yet
+ *
+ * Copyright (C) 2017 Jehan <jehan@gimp.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+#ifndef __GIMP_EARLY_RC_H__
+#define __GIMP_EARLY_RC_H__
+
+#include "core/core-enums.h"
+
+#define GIMP_TYPE_EARLY_RC (gimp_early_rc_get_type ())
+#define GIMP_EARLY_RC(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GIMP_TYPE_EARLY_RC, GimpEarlyRc))
+#define GIMP_EARLY_RC_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GIMP_TYPE_EARLY_RC, GimpEarlyRcClass))
+#define GIMP_IS_EARLY_RC(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GIMP_TYPE_EARLY_RC))
+#define GIMP_IS_EARLY_RC_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GIMP_TYPE_EARLY_RC))
+
+
+typedef struct _GimpEarlyRcClass GimpEarlyRcClass;
+
+struct _GimpEarlyRc
+{
+ GObject parent_instance;
+
+ GFile *user_gimprc;
+ GFile *system_gimprc;
+ gboolean verbose;
+
+ gchar *language;
+
+#ifdef G_OS_WIN32
+ GimpWin32PointerInputAPI win32_pointer_input_api;
+#endif
+};
+
+struct _GimpEarlyRcClass
+{
+ GObjectClass parent_class;
+};
+
+
+GType gimp_early_rc_get_type (void) G_GNUC_CONST;
+
+GimpEarlyRc * gimp_early_rc_new (GFile *system_gimprc,
+ GFile *user_gimprc,
+ gboolean verbose);
+gchar * gimp_early_rc_get_language (GimpEarlyRc *rc);
+
+#ifdef G_OS_WIN32
+GimpWin32PointerInputAPI gimp_early_rc_get_win32_pointer_input_api (GimpEarlyRc *rc);
+#endif
+
+
+#endif /* GIMP_EARLY_RC_H__ */
+
diff --git a/app/config/gimplangrc.h b/app/config/gimplangrc.h
deleted file mode 100644
index 62412fd..0000000
--- a/app/config/gimplangrc.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/* GIMP - The GNU Image Manipulation Program
- * Copyright (C) 1995 Spencer Kimball and Peter Mattis
- *
- * GimpLangRc: pre-parsing of gimprc returning the language.
- * Copyright (C) 2017 Jehan <jehan@gimp.org>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-#ifndef __GIMP_LANG_RC_H__
-#define __GIMP_LANG_RC_H__
-
-
-#define GIMP_TYPE_LANG_RC (gimp_lang_rc_get_type ())
-#define GIMP_LANG_RC(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GIMP_TYPE_LANG_RC, GimpLangRc))
-#define GIMP_LANG_RC_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GIMP_TYPE_LANG_RC, GimpLangRcClass))
-#define GIMP_IS_LANG_RC(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GIMP_TYPE_LANG_RC))
-#define GIMP_IS_LANG_RC_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GIMP_TYPE_LANG_RC))
-
-
-typedef struct _GimpLangRcClass GimpLangRcClass;
-
-struct _GimpLangRc
-{
- GObject parent_instance;
-
- GFile *user_gimprc;
- GFile *system_gimprc;
- gboolean verbose;
-
- gchar *language;
-};
-
-struct _GimpLangRcClass
-{
- GObjectClass parent_class;
-};
-
-
-GType gimp_lang_rc_get_type (void) G_GNUC_CONST;
-
-GimpLangRc * gimp_lang_rc_new (GFile *system_gimprc,
- GFile *user_gimprc,
- gboolean verbose);
-gchar * gimp_lang_rc_get_language (GimpLangRc *rc);
-
-
-#endif /* GIMP_LANG_RC_H__ */
-
diff --git a/app/config/gimprc-blurbs.h b/app/config/gimprc-blurbs.h
index 51b771a..3d5f5d0 100644
--- a/app/config/gimprc-blurbs.h
+++ b/app/config/gimprc-blurbs.h
@@ -247,6 +247,9 @@ _("Export IPTC metadata by default.")
#define GENERATE_BACKTRACE_BLURB \
_("Try generating debug data for bug reporting when appropriate.")
+#define WIN32_POINTER_INPUT_API_BLURB \
+_("Sets the preferred pen and touch input API.")
+
#define INITIAL_ZOOM_TO_FIT_BLURB \
_("When enabled, this will ensure that the full image is visible after a " \
"file is opened, otherwise it will be displayed with a scale of 1:1.")