Fix remaining web study mode artifacts
This commit is contained in:
+10
-5
@@ -193,6 +193,8 @@ func _build_ui() -> void:
|
|||||||
theme_button.custom_minimum_size = Vector2(44, 44)
|
theme_button.custom_minimum_size = Vector2(44, 44)
|
||||||
theme_button.size_flags_horizontal = Control.SIZE_SHRINK_CENTER
|
theme_button.size_flags_horizontal = Control.SIZE_SHRINK_CENTER
|
||||||
theme_button.size_flags_vertical = Control.SIZE_SHRINK_CENTER
|
theme_button.size_flags_vertical = Control.SIZE_SHRINK_CENTER
|
||||||
|
theme_button.alignment = HORIZONTAL_ALIGNMENT_CENTER
|
||||||
|
theme_button.icon_alignment = HORIZONTAL_ALIGNMENT_CENTER
|
||||||
theme_button.focus_mode = Control.FOCUS_NONE
|
theme_button.focus_mode = Control.FOCUS_NONE
|
||||||
theme_button.pressed.connect(theme_service.toggle_theme)
|
theme_button.pressed.connect(theme_service.toggle_theme)
|
||||||
_style_shell_theme_button(theme_button)
|
_style_shell_theme_button(theme_button)
|
||||||
@@ -600,16 +602,19 @@ func _style_shell_theme_button(button: Button) -> void:
|
|||||||
normal.bg_color = Color("111b30") if dark else Brand.LIGHT_SURFACE
|
normal.bg_color = Color("111b30") if dark else Brand.LIGHT_SURFACE
|
||||||
normal.border_color = Color("33415d") if dark else Brand.LIGHT_BORDER
|
normal.border_color = Color("33415d") if dark else Brand.LIGHT_BORDER
|
||||||
normal.set_border_width_all(1)
|
normal.set_border_width_all(1)
|
||||||
normal.set_corner_radius_all(24)
|
normal.set_corner_radius_all(22)
|
||||||
normal.content_margin_left = 10
|
normal.content_margin_left = 0
|
||||||
normal.content_margin_right = 10
|
normal.content_margin_right = 0
|
||||||
normal.content_margin_top = 10
|
normal.content_margin_top = 0
|
||||||
normal.content_margin_bottom = 10
|
normal.content_margin_bottom = 0
|
||||||
var hover := normal.duplicate() as StyleBoxFlat
|
var hover := normal.duplicate() as StyleBoxFlat
|
||||||
hover.border_color = Brand.AMBER
|
hover.border_color = Brand.AMBER
|
||||||
|
var focus := StyleBoxEmpty.new()
|
||||||
button.add_theme_stylebox_override("normal", normal)
|
button.add_theme_stylebox_override("normal", normal)
|
||||||
button.add_theme_stylebox_override("hover", hover)
|
button.add_theme_stylebox_override("hover", hover)
|
||||||
button.add_theme_stylebox_override("pressed", hover)
|
button.add_theme_stylebox_override("pressed", hover)
|
||||||
|
button.add_theme_stylebox_override("focus", focus)
|
||||||
|
button.add_theme_constant_override("h_separation", 0)
|
||||||
button.add_theme_color_override("font_color", Brand.AMBER)
|
button.add_theme_color_override("font_color", Brand.AMBER)
|
||||||
button.add_theme_color_override("font_hover_color", Brand.AMBER)
|
button.add_theme_color_override("font_hover_color", Brand.AMBER)
|
||||||
|
|
||||||
|
|||||||
@@ -185,7 +185,7 @@ func _build_mode_view() -> void:
|
|||||||
"Coming Soon",
|
"Coming Soon",
|
||||||
"Coming Soon",
|
"Coming Soon",
|
||||||
"Endless practice with AI-generated questions\ntailored to your performance.",
|
"Endless practice with AI-generated questions\ntailored to your performance.",
|
||||||
"medmind",
|
"activity",
|
||||||
false,
|
false,
|
||||||
Brand.PURPLE)
|
Brand.PURPLE)
|
||||||
|
|
||||||
@@ -202,35 +202,6 @@ func _build_mode_view() -> void:
|
|||||||
ccs_status_label = ccs_card.status
|
ccs_status_label = ccs_card.status
|
||||||
ccs_button.pressed.connect(_select_ccs)
|
ccs_button.pressed.connect(_select_ccs)
|
||||||
|
|
||||||
var spacer := Control.new()
|
|
||||||
spacer.size_flags_vertical = Control.SIZE_EXPAND_FILL
|
|
||||||
mode_view.add_child(spacer)
|
|
||||||
|
|
||||||
var simulation_note := HBoxContainer.new()
|
|
||||||
simulation_note.add_theme_constant_override("separation", 8)
|
|
||||||
mode_view.add_child(simulation_note)
|
|
||||||
var info := Label.new()
|
|
||||||
info.text = "i"
|
|
||||||
info.add_theme_font_size_override("font_size", 17)
|
|
||||||
info.add_theme_color_override("font_color", Brand.SLATE)
|
|
||||||
simulation_note.add_child(info)
|
|
||||||
var note := RichTextLabel.new()
|
|
||||||
note.bbcode_enabled = true
|
|
||||||
note.fit_content = true
|
|
||||||
note.scroll_active = false
|
|
||||||
note.autowrap_mode = TextServer.AUTOWRAP_WORD_SMART
|
|
||||||
note.size_flags_horizontal = Control.SIZE_EXPAND_FILL
|
|
||||||
note.custom_minimum_size.x = 0
|
|
||||||
note.text = "Full-length, 12-block simulation is available in the [url=exams][color=#7c3aed]Exams[/color][/url] section."
|
|
||||||
note.add_theme_font_override("normal_font", Brand.font)
|
|
||||||
note.add_theme_font_size_override("normal_font_size", 15)
|
|
||||||
note.add_theme_color_override("default_color", Brand.SLATE)
|
|
||||||
note.set_meta("medmind_role", "muted_rich")
|
|
||||||
themed_controls.append(note)
|
|
||||||
note.meta_clicked.connect(func(_meta: Variant): main.show_screen("simulation_history"))
|
|
||||||
simulation_note.add_child(note)
|
|
||||||
|
|
||||||
|
|
||||||
func _add_mode_card(
|
func _add_mode_card(
|
||||||
title_text: String,
|
title_text: String,
|
||||||
subtitle_text: String,
|
subtitle_text: String,
|
||||||
@@ -277,6 +248,7 @@ func _add_mode_card(
|
|||||||
themed_controls.append(icon_panel)
|
themed_controls.append(icon_panel)
|
||||||
header.add_child(icon_panel)
|
header.add_child(icon_panel)
|
||||||
var icon := TextureRect.new()
|
var icon := TextureRect.new()
|
||||||
|
icon.name = "%sIcon" % title_text.replace(" ", "")
|
||||||
icon.mouse_filter = Control.MOUSE_FILTER_IGNORE
|
icon.mouse_filter = Control.MOUSE_FILTER_IGNORE
|
||||||
icon.texture = preload("res://assets/branding/medmind-icon.png") if icon_name == "medmind" else load("res://assets/icons/lucide/%s.svg" % icon_name)
|
icon.texture = preload("res://assets/branding/medmind-icon.png") if icon_name == "medmind" else load("res://assets/icons/lucide/%s.svg" % icon_name)
|
||||||
icon.material = Brand.logo_cutout_material() if icon_name == "medmind" else null
|
icon.material = Brand.logo_cutout_material() if icon_name == "medmind" else null
|
||||||
|
|||||||
@@ -27,6 +27,11 @@ func _run() -> void:
|
|||||||
_assert(card.custom_minimum_size.x == 0.0, "phone-width cards should release their desktop minimum width")
|
_assert(card.custom_minimum_size.x == 0.0, "phone-width cards should release their desktop minimum width")
|
||||||
for row in selector.responsive_card_rows:
|
for row in selector.responsive_card_rows:
|
||||||
_assert(row.vertical, "phone-width card content should stack instead of clipping")
|
_assert(row.vertical, "phone-width card content should stack instead of clipping")
|
||||||
|
_assert(selector.mode_view.find_children("*", "RichTextLabel", true, false).is_empty(), "study modes should not render the legacy rich-text simulation note")
|
||||||
|
var dynamic_icon := selector.mode_view.find_child("DynamicQuestionsIcon", true, false) as TextureRect
|
||||||
|
_assert(dynamic_icon != null, "dynamic questions should expose its mode icon")
|
||||||
|
if dynamic_icon != null:
|
||||||
|
_assert(dynamic_icon.texture.resource_path == "res://assets/icons/lucide/activity.svg", "dynamic questions should use a web-safe vector icon")
|
||||||
|
|
||||||
var main_screen = load("res://scripts/ui/main.gd").new()
|
var main_screen = load("res://scripts/ui/main.gd").new()
|
||||||
main_screen.size = host.size
|
main_screen.size = host.size
|
||||||
@@ -35,6 +40,7 @@ func _run() -> void:
|
|||||||
main_screen._update_responsive_layout()
|
main_screen._update_responsive_layout()
|
||||||
_assert(main_screen.theme_button.custom_minimum_size == Vector2(44, 44), "the theme toggle should keep a stable square footprint")
|
_assert(main_screen.theme_button.custom_minimum_size == Vector2(44, 44), "the theme toggle should keep a stable square footprint")
|
||||||
_assert(main_screen.theme_button.size.x >= 44.0 and main_screen.theme_button.size.y >= 44.0, "the theme toggle should not collapse into an oval")
|
_assert(main_screen.theme_button.size.x >= 44.0 and main_screen.theme_button.size.y >= 44.0, "the theme toggle should not collapse into an oval")
|
||||||
|
_assert(main_screen.theme_button.icon_alignment == HORIZONTAL_ALIGNMENT_CENTER, "the theme toggle icon should remain centered")
|
||||||
_assert(not main_screen.user_label.visible and not main_screen.account_chevron_button.visible, "nonessential account controls should collapse on phone-width headers")
|
_assert(not main_screen.user_label.visible and not main_screen.account_chevron_button.visible, "nonessential account controls should collapse on phone-width headers")
|
||||||
|
|
||||||
host.queue_free()
|
host.queue_free()
|
||||||
|
|||||||
Reference in New Issue
Block a user