UX: Convert 'Change type' to submenu with checkmarks #851

Closed
opened 2026-04-05 16:33:07 +02:00 by MrUnknownDE · 0 comments
Owner

Originally created by @Eldenroot on 2/8/2026

All credits jomixlaf - PR picked from Bambustudio repo

Summary
This PR improves the "Change type" context menu for parts/volumes by converting it from a dialog-based selection to an inline submenu with checkmarks.

Before: Clicking "Change type" opens a separate dialog popup requiring an extra click to select the type.

After: "Change type" shows a submenu (like "Change Filament") with all options visible and checkmarks indicating the current type(s).

image

Changes
Added set_volume_type(ModelVolumeType) function to ObjectList for direct type assignment
Added get_selected_volume_type() helper function
Modified append_menu_item_change_type() in GUI_Factories.cpp to create a submenu
Checkmarks update dynamically based on selection
Multi-selection support: when selecting multiple items of different types, all applicable types show checkmarks
Benefits
Fewer clicks: Change type directly from submenu without extra dialog
Visual feedback: See current type at a glance via checkmark
Consistency: Matches UX pattern of "Change Filament" submenu
Multi-select aware: Shows all types present in current selection
SCR-20260130-wb4
Test plan
Right-click on a part → "Change type" shows submenu with checkmark on current type
Select type from submenu → part type changes correctly
Select multiple parts of same type → single checkmark shown
Select multiple parts of different types → multiple checkmarks shown
Verify all type options work: Part, Negative Part, Modifier, Support Blocker, Support Enforcer

*Originally created by @Eldenroot on 2/8/2026* All credits jomixlaf - PR picked from Bambustudio repo **Summary** This PR improves the "Change type" context menu for parts/volumes by converting it from a dialog-based selection to an inline submenu with checkmarks. Before: Clicking "Change type" opens a separate dialog popup requiring an extra click to select the type. After: "Change type" shows a submenu (like "Change Filament") with all options visible and checkmarks indicating the current type(s). <img width="713" height="818" alt="image" src="https://github.com/user-attachments/assets/5c740ba8-9b78-4297-a668-6692381799ba" /> **Changes** Added set_volume_type(ModelVolumeType) function to ObjectList for direct type assignment Added get_selected_volume_type() helper function Modified append_menu_item_change_type() in GUI_Factories.cpp to create a submenu Checkmarks update dynamically based on selection Multi-selection support: when selecting multiple items of different types, all applicable types show checkmarks Benefits Fewer clicks: Change type directly from submenu without extra dialog Visual feedback: See current type at a glance via checkmark Consistency: Matches UX pattern of "Change Filament" submenu Multi-select aware: Shows all types present in current selection SCR-20260130-wb4 **Test plan** Right-click on a part → "Change type" shows submenu with checkmark on current type Select type from submenu → part type changes correctly Select multiple parts of same type → single checkmark shown Select multiple parts of different types → multiple checkmarks shown Verify all type options work: Part, Negative Part, Modifier, Support Blocker, Support Enforcer
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github/OrcaSlicer#851