fix: subcategory export buttons hidden by ghost entries + give them their own centered row
Two issues with the per-subprofile (subcategory) export buttons:
1. Visibility was decided by a fuzzy `f.endswith("_" + suffix)` match against
the hidden-subcats set. A ghost "_blowjob" (empty-base leftover from the
trailing-slash folder bug) or an unrelated "mp4_no_clap" would match and
hide the wrong button — so enabling a subcategory in the Sub menu never
revealed its export button. Match the exact "<base>_<suffix>" folder name
instead (same name the menu shows and _hidden_subcats stores).
2. The buttons were crammed into the transport row after Export. Move them to
their own row with stretches on both ends so the (often many) "▸ name"
buttons stay centered and out of the transport controls.
Also cleared the polluted hidden_subcats/POV_Front set in the user's QSettings
(ghost "_*" names + a hide-all'd set of real "mp4_*"), so every subcategory is
visible again. Regression test added for the exact-match predicate.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -222,3 +222,24 @@ def test_export_base_name_handles_trailing_slash(win):
|
||||
assert win._export_base_name() == "mp4"
|
||||
win._txt_folder.setText("/x/AlexisCrystal/mp4")
|
||||
assert win._export_base_name() == "mp4"
|
||||
|
||||
|
||||
def test_subprofile_button_visibility_exact_match(win):
|
||||
# A subcategory's export button must track ITS folder exactly. A ghost
|
||||
# "_blowjob" (empty-base leftover) or an unrelated "mp4_no_clap" must NOT
|
||||
# hide the "blowjob"/"clap" buttons (the old fuzzy endswith() match did,
|
||||
# so enabling a subcategory never revealed its export button).
|
||||
win._txt_folder.setText("/x/AlexisCrystal/mp4")
|
||||
win._subprofiles = ["blowjob", "clap"]
|
||||
win._rebuild_subprofile_buttons()
|
||||
btns = {b.text().removeprefix("▸ "): b for b in win._subprofile_btns}
|
||||
|
||||
win._hidden_subcats = {"_blowjob", "mp4_no_clap"}
|
||||
win._apply_subcat_visibility()
|
||||
assert not btns["blowjob"].isHidden() # ghost "_blowjob" must not hide it
|
||||
assert not btns["clap"].isHidden() # "mp4_no_clap" must not hide "clap"
|
||||
|
||||
win._hidden_subcats = {"mp4_blowjob"} # exact folder -> hidden
|
||||
win._apply_subcat_visibility()
|
||||
assert btns["blowjob"].isHidden()
|
||||
assert not btns["clap"].isHidden()
|
||||
|
||||
Reference in New Issue
Block a user