Persist text zoom level across sessions
Question bank and CCS case text-size (A-/A+) previously reset to 1.0 on every app launch. Both now load their saved scale from user://settings.cfg at startup and save on every adjustment, mirroring the existing pattern used for dark/light mode and sound preferences.
This commit is contained in:
@@ -18,6 +18,9 @@ const CORRECT_ADVANCE_DELAY_SECONDS := 1.25
|
||||
const TEXT_SCALE_MIN := 0.85
|
||||
const TEXT_SCALE_MAX := 1.35
|
||||
const TEXT_SCALE_STEP := 0.1
|
||||
const TEXT_SCALE_SETTINGS_PATH := "user://settings.cfg"
|
||||
const TEXT_SCALE_SETTINGS_SECTION := "study"
|
||||
const TEXT_SCALE_SETTINGS_KEY := "question_text_scale"
|
||||
const REPORT_DETAILS_MIN := 10
|
||||
const REPORT_DETAILS_MAX := 2000
|
||||
const MEDIA_ZOOM_MIN := 0.25
|
||||
@@ -146,6 +149,7 @@ var shake_origin := Vector2.ZERO
|
||||
|
||||
func _ready() -> void:
|
||||
theme_service = get_node("/root/UIThemeService")
|
||||
question_text_scale = _load_text_scale_preference()
|
||||
set_anchors_preset(Control.PRESET_FULL_RECT)
|
||||
add_theme_constant_override("separation", 10)
|
||||
if not QuestionBankService.choice_percentages_updated.is_connected(_on_choice_percentages_updated):
|
||||
@@ -2121,11 +2125,28 @@ func _adjust_question_text_scale(delta: float) -> void:
|
||||
if is_equal_approx(next_scale, question_text_scale):
|
||||
return
|
||||
question_text_scale = next_scale
|
||||
_save_text_scale_preference(next_scale)
|
||||
_refresh_scaled_fonts(self)
|
||||
_render_stem()
|
||||
_apply_saved_choice_state()
|
||||
|
||||
|
||||
func _load_text_scale_preference() -> float:
|
||||
var config := ConfigFile.new()
|
||||
if config.load(TEXT_SCALE_SETTINGS_PATH) == OK:
|
||||
var saved: float = config.get_value(TEXT_SCALE_SETTINGS_SECTION, TEXT_SCALE_SETTINGS_KEY, 1.0)
|
||||
return clamp(saved, TEXT_SCALE_MIN, TEXT_SCALE_MAX)
|
||||
return 1.0
|
||||
|
||||
|
||||
func _save_text_scale_preference(value: float) -> void:
|
||||
var config := ConfigFile.new()
|
||||
config.load(TEXT_SCALE_SETTINGS_PATH)
|
||||
config.set_value(TEXT_SCALE_SETTINGS_SECTION, TEXT_SCALE_SETTINGS_KEY, value)
|
||||
if config.save(TEXT_SCALE_SETTINGS_PATH) != OK:
|
||||
push_warning("Unable to save question text scale preference.")
|
||||
|
||||
|
||||
func _set_scaled_label(label: Label, base_size: int, color: Color = Style.TEXT) -> void:
|
||||
label.set_meta("question_base_font_size", base_size)
|
||||
label.add_theme_color_override("font_color", color)
|
||||
|
||||
Reference in New Issue
Block a user