diff --git a/src/defaultsettings.cpp b/src/defaultsettings.cpp index f1756bd8e..2915caa48 100644 --- a/src/defaultsettings.cpp +++ b/src/defaultsettings.cpp @@ -97,7 +97,17 @@ void set_default_settings() // Client settings->setDefault("address", ""); settings->setDefault("enable_sound", "true"); +#if defined(__unix__) && !defined(__APPLE__) && !defined (__ANDROID__) + // On Linux+X11 (not Linux+Wayland or Linux+XWayland), I've encountered a bug + // where fake mouse events were generated from touch events if in relative + // mouse mode, resulting in the touchscreen controls being instantly disabled + // again and thus making them unusable. + // => We can't switch based on the last input method used. + // => Fall back to hardware detection. + settings->setDefault("touch_controls", bool_to_cstr(has_touch)); +#else settings->setDefault("touch_controls", "auto"); +#endif // Since GUI scaling shouldn't suddenly change during a session, we use // hardware detection for "touch_gui" instead of switching based on the last // input method used.