Only select available API's

This commit is contained in:
Luca Bacci 2021-08-19 21:55:20 +02:00
parent 825ea9dc1c
commit 1685746579
No known key found for this signature in database
GPG Key ID: 8E3C8D989C98883D
2 changed files with 43 additions and 2 deletions

View File

@ -1182,7 +1182,26 @@ gimp_core_config_set_property (GObject *object,
break;
#ifdef G_OS_WIN32
case PROP_WIN32_POINTER_INPUT_API:
core_config->win32_pointer_input_api = g_value_get_enum (value);
{
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

View File

@ -29,6 +29,9 @@
#include "config-types.h"
#include "core/core-types.h"
#include "core/gimp-utils.h"
#include "gimpearlyrc.h"
enum
@ -210,7 +213,26 @@ gimp_early_rc_set_property (GObject *object,
#ifdef G_OS_WIN32
case PROP_WIN32_POINTER_INPUT_API:
rc->win32_pointer_input_api = g_value_get_enum (value);
{
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