Camera orbit multiplier fails with fractional values in non-English locales (e.g., 0.99 freezes camera) #1461

Open
opened 2026-04-05 17:51:27 +02:00 by MrUnknownDE · 0 comments
Owner

Originally created by @DataDry on 11/30/2025

Is there an existing issue for this problem?

  • I have searched the existing issues

OrcaSlicer Version

2.3.1

Operating System (OS)

Windows

OS Version

Windows 11 23H2

Additional system information

No response

Printer

Creality Ender 3 V3 KE (irrelevant to UI bug)

How to reproduce

  1. Open Preferences → Camera settings
  2. Test these values for "Orbit speed multiplier":
  • 0.99 → attempt camera orbit
  • 1.00 → attempt camera orbit
  • 1.99 → attempt camera orbit
  • 2.00 → attempt camera orbit

Actual results

  • 0.99: Camera completely frozen
  • 1.00: Normal speed
  • 1.99: Normal speed (ignores fractional part)
  • 2.00: Double speed

Expected results

Smooth speed scaling at all fractional values (e.g., 1.99 = 199% speed)

Project file & Debug log uploads

No relevant project file. Debug logs show no errors.

debug_Sun_Nov_30_23_24_36_35940.log.zip

Checklist of files to include

  • Log file
  • Project file

Anything else?

Critical detail: Bug only occurs when application language is set to non-English (confirmed using Russian, Ukrainian, French, Polish, German and several other interface languages). This bug only manifests when the application interface language is non-English. All fractional multipliers work correctly when app language is set to English regardless of system locale.

Strongly suspected cause:
Locale-dependent number formatting during config parsing. When app language ≠ English:

Values like 0.99 may be saved/loaded as 0,99 (comma decimal)
Camera logic likely fails to parse this format, defaulting to 0 or truncating to integer
Disclaimer: While UI code (at first glance) appears to be locale-safe, the config storage/parsing pipeline likely uses inconsistent locale handling.

Reproducibility:
100% with non-English app languages (tested with half of the supported languages). Never occurs with English app language.

Off-topic suggestion
The 0.05–2.00 speed limit feels restrictive. Consider increasing max to 5.0 or 10.0 and lowering min to 0.01 or 0.001 for large models/high-DPI screens/high-DPI mouses.

Please investigate:
How camera speed values are parsed when app language ≠ system locale
Whether config storage uses std::locale::classic() for numeric values
How camera_orbit_mult is parsed/used in the camera movement logic?
Whether config storage handles decimals correctly across locales/languages?

*Originally created by @DataDry on 11/30/2025* ### Is there an existing issue for this problem? - [x] I have searched the existing issues ### OrcaSlicer Version 2.3.1 ### Operating System (OS) Windows ### OS Version Windows 11 23H2 ### Additional system information _No response_ ### Printer Creality Ender 3 V3 KE (irrelevant to UI bug) ### How to reproduce 1. Open Preferences → Camera settings 2. Test these values for "Orbit speed multiplier": - ```0.99``` → attempt camera orbit - ```1.00``` → attempt camera orbit - ```1.99``` → attempt camera orbit - ```2.00``` → attempt camera orbit ### Actual results - ```0.99```: Camera completely frozen - ```1.00```: Normal speed - ```1.99```: Normal speed (ignores fractional part) - ```2.00```: Double speed ### Expected results Smooth speed scaling at all fractional values (e.g., ```1.99``` = 199% speed) ### Project file & Debug log uploads No relevant project file. Debug logs show no errors. [debug_Sun_Nov_30_23_24_36_35940.log.zip](https://github.com/user-attachments/files/23841915/debug_Sun_Nov_30_23_24_36_35940.log.zip) ### Checklist of files to include - [x] Log file - [ ] Project file ### Anything else? Critical detail: Bug only occurs when application language is set to non-English (confirmed using Russian, Ukrainian, French, Polish, German and several other interface languages). This bug only manifests when the application interface language is non-English. All fractional multipliers work correctly when app language is set to English regardless of system locale. Strongly suspected cause: Locale-dependent number formatting during config parsing. When app language ≠ English: Values like ```0.99``` may be saved/loaded as ```0,99``` (comma decimal) Camera logic likely fails to parse this format, defaulting to 0 or truncating to integer Disclaimer: While UI code (at first glance) appears to be locale-safe, the config storage/parsing pipeline likely uses inconsistent locale handling. Reproducibility: 100% with non-English app languages (tested with half of the supported languages). Never occurs with English app language. Off-topic suggestion The 0.05–2.00 speed limit feels restrictive. Consider increasing max to 5.0 or 10.0 and lowering min to 0.01 or 0.001 for large models/high-DPI screens/high-DPI mouses. Please investigate: How camera speed values are parsed when app language ≠ system locale Whether config storage uses std::locale::classic() for numeric values How ```camera_orbit_mult``` is parsed/used in the camera movement logic? Whether config storage handles decimals correctly across locales/languages?
MrUnknownDE added the bugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbugbug labels 2026-04-05 17:51:58 +02:00
Sign in to join this conversation.
No Label bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug bug
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github/OrcaSlicer#1461