feat(FlightMap): add mission item grouping and improve map usability#14623
feat(FlightMap): add mission item grouping and improve map usability#14623rubenp02 wants to merge 6 commits into
Conversation
There was a problem hiding this comment.
Pull request overview
This PR improves mission map usability across PlanView and FlyView by introducing a screen-space grouping mechanism for overlapping simple mission item indicators, while also addressing several interaction/visibility issues (drag readiness, z-ordering, arrow visibility).
Changes:
- Added
MissionItemIndicatorGroupto cluster overlapping simple mission item indicators and provide an in-place selector for choosing among grouped items. - Updated mission item visuals to integrate with grouping and to ensure newly-created items are immediately draggable once their indicator finishes loading.
- Disabled mission-item auto-fade and hid direction arrows / split handles when the corresponding leg is too short at the current zoom.
Reviewed changes
Copilot reviewed 12 out of 12 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| src/PlanView/TransectStyleMapVisuals.qml | Passes map control into MapLineArrow after it became an explicit dependency. |
| src/PlanView/TakeoffItemMapVisual.qml | Hooks takeoff indicator into the new indicator grouping system and interactive gating. |
| src/PlanView/SimpleItemMapVisual.qml | Passes indicator-group and visibility/interaction flags into MissionItemIndicator. |
| src/PlanView/PlanView.qml | Instantiates the grouping component in PlanView and hides split UI for too-short legs at current zoom. |
| src/PlanView/MissionItemMapVisualBase.qml | Fixes drag-area readiness by waiting for the async indicator to be loaded; routes clicks via indicator activation when available. |
| src/PlanView/MissionItemMapVisual.qml | Plumbs indicatorGroup into simple-item visuals at load time. |
| src/PlanView/MissionItemIndexLabel.qml | Adds “medium” sizing and optional sub/supplementary text to support group indicators and selector labels. |
| src/FlightMap/MapItems/PlanMapItems.qml | Instantiates grouping in FlyView’s plan overlays and passes it into mission item visuals; updates arrows for new MapLineArrow API. |
| src/FlightMap/MapItems/MissionItemIndicatorGroup.qml | New: performs screen-space grouping and shows a non-modal horizontal selector panel for grouped items. |
| src/FlightMap/MapItems/MissionItemIndicator.qml | Integrates grouping (representative visibility, activation behavior, z-ordering, disabling auto-fade). |
| src/FlightMap/MapItems/MapLineArrow.qml | Adds explicit mapControl dependency and hides arrows when legs are shorter than the arrow canvas at current zoom. |
| src/FlightMap/CMakeLists.txt | Registers the new MissionItemIndicatorGroup.qml in the FlightMap QML module. |
88998d2 to
b9557c5
Compare
|
See the Build Results workflow run for details. |
|
Can you move the bugs which should go into 5.1 into their own pull? |
Newly inserted simple mission items, such as waypoints created with the plus button shown on mission legs, could become current before their asynchronous map indicator finished loading, leaving their drag area unusable until the item was selected again. Drag areas now wait for their indicator to load, making new items immediately draggable.
When multiple simple mission items shared the same position, later items could partially cover the current target, including its number. The current item is now drawn on top, ensuring the active navigation target can always be identified during flight.
Direction arrows could become larger on screen than their underlying mission legs, obscuring rather than clarifying the route. They now hide whenever a leg's projected length is shorter than the 30-pixel width of the arrow canvas.
Simple mission items can share coordinates or become close enough at the current map scale for their indicators to overlap. Only the topmost indicator could then be reliably identified or selected, particularly on touchscreens. They are now combined into a single group indicator with direct access to every grouped item. Key changes: - Groups items in screen space and updates the groups when the map scale or item positions change. Indicators remain separate while they can still be selected individually. - Shows the current item's normal marker label when the group contains it, or that of the lowest-sequence item otherwise. A new intermediate marker size and an ellipsis below the label distinguish groups from individual items. - Opens a non-modal horizontal selector when a group is selected in Plan or Fly view. The selector grows with its contents up to a viewport-relative limit while keeping every member directly accessible. Command-specific labels preserve their normal abbreviations and include sequence numbers to distinguish repeated items. - Keeps each simple mission item independently loaded. This preserves mission legs, loiter circles, dragging, and other associated map visuals. Complex items do not interact with the grouping system.
MapQuickItem's default auto-fade hides simple mission indicators at low zoom levels, removing mission context when several items occupy a small area. Grouped indicators manage that density without losing access to any item. Automatic fading is therefore disabled, allowing simple mission markers to remain visible and selectable at every zoom level.
The split handle remained visible on legs whose midpoint was too close to either endpoint for an inserted item to remain separately selectable. It now hides whenever the resulting item would join the same indicator group.
b9557c5 to
45833cb
Compare
Done @ #14670. I'll update this one to remove duplicate commits once that one goes in. |
Description
A variety of bugfixes and a new mission item grouping feature to improve mission map usability.
fix(PlanView): make new mission items draggable
Newly inserted simple mission items, such as waypoints created with the plus button shown on mission legs, could become current before their asynchronous map indicator finished loading, leaving their drag area unusable until the item was selected again.
Drag areas now wait for their indicator to load, making new items immediately draggable.
fix(FlightMap): draw current mission item on top
When multiple simple mission items shared the same position, later items could partially cover the current target, including its number. The current item is now drawn on top, ensuring the active navigation target can always be identified during flight.
feat(FlightMap): group overlapping mission items
Simple mission items can share coordinates or become close enough at the current map scale for their indicators to overlap. Only the topmost indicator could then be reliably identified or selected, particularly on touchscreens.
They are now combined into a single group indicator with direct access to every grouped item.
Key changes:
fix(FlightMap): keep items visible at all zooms
MapQuickItem's default auto-fade hides simple mission indicators at low zoom levels, removing mission context when several items occupy a small area.
Grouped indicators manage that density without losing access to any item. Automatic fading is therefore disabled, allowing simple mission markers to remain visible and selectable at every zoom level.
fix(PlanView): hide split handles on short legs
The split handle remained visible on legs whose midpoint was too close to either endpoint for an inserted item to remain separately selectable.
It now hides whenever the resulting item would join the same indicator group.
fix(FlightMap): hide arrows on short legs
Direction arrows could become larger on screen than their underlying mission legs, obscuring rather than clarifying the route.
They now hide whenever a leg's projected length is shorter than the 30-pixel width of the arrow canvas.
Type of Change
Testing
Platforms Tested
Flight Stacks Tested
Screenshots
Checklist
Related Issues
Closes #8728
By submitting this pull request, I confirm that my contribution is made under the terms of the project's dual license (Apache 2.0 and GPL v3).