mirror of
https://github.com/storytold/vectorcraft.git
synced 2026-11-08 22:28:09 +00:00
Two problems in the Character Styles panel and its options dialog. Opening the options took the panel menu's item, which is easy to miss; a double-click on a style's row did nothing beyond applying the style a second time. A double-click on a user character style's row now opens its Character Style Options (`ui.charStyleOptions`), as the menu item does. A single click still applies the style, the second click of the double-click does not apply it again (the Normal style's included), and with Shift, Cmd/Ctrl or Alt held the double-click only follows the click rules. The built-in Normal style opens no dialog. Double-clicking a paragraph style's row similarly opens its options, which are the rename dialog the Paragraph Styles panel menu opens (`ui.paramDialog` running `paraStyle.rename`): paragraph styles have no full options window yet. The dialog then grew with its content: the General section lists every attribute of the style, so the window covered the screen and its buttons could sit below it. The content now scrolls both ways inside a window at most 420 points tall (less on a short screen) and never wider than the points left beside the section list, with one scroll offset per section. The dialog keeps a fixed width of 720 points, enough for the widest section's controls, in every section. The content's height is the space the footer leaves, measured from the footer drawn last frame, so a large interface scale's taller footer is reserved too and OK and Cancel stay visible. The section list stays outside the scroll area, so scrolling a long section never moves the navigation; the section is read after the list handles a click, so a newly picked section gets its own scroll offset in the same frame. Tests: `panels::text_styles::tests::double_clicking_a_character_style_row_opens_its_options` selects text, double-clicks a character style's row and checks the dialog opens with the style's name, one apply ran from the first click and the second click applied nothing; a paragraph style's row opens none. `double_clicking_the_normal_style_opens_no_options` checks the Normal style opens none and is applied once. `dialogs::char_style_options::tests::the_sections_scroll_in_a_window_shorter_than_the_general_list` draws the dialog on a 900 by 560 point screen and checks OK and Cancel stay on it, the dialog keeps its 720-point width in two sections, and the General list is taller than its scroll area. `every_section_and_the_buttons_fit_the_smallest_window` checks the app's minimum 800 by 500 point window in all five sections: every section label, OK and Cancel are on the screen. `a_scrolled_section_keeps_its_offset_after_switching_away_and_back` scrolls General, clicks Basic Character Formats and then General again, and checks General''s content returns to the same place: the section is read after the list handles the click, so no other section stores its offset. `every_section_and_the_buttons_fit_the_smallest_window_at_twice_the_scale` checks the same in the 400 by 250 points the minimum window holds at 2x UI scale, before and after a wheel scrolls the content. Docs: type-parity (a panel row and the revision history), ui-parity (a panel row and the revision history), target-app-parity (two evidence bullets and the revision history) and roadmap (the revision history), with the status lines updated.