Repository navigation
[Feature]: One place per label setting: the ribbon edits the chosen class, the Labeling pane by topic #858
Description
Before you start
- I searched the existing issues and the roadmap and did not find a duplicate request.
What problem does this solve?
Since #722 the Labeling pane edits the label class chosen at its top, but the label controls are spread over five places, each with its own subset and none saying which class it changes:
| Place | What it has |
|---|---|
| Style › Labels, Label Range, Label Placement, Label Class, Text Symbol | on/off, Properties, scale and distance range, placement, field, size, colour, bold, halo |
| View › Labeling | on/off, Lock, Pause, View Unplaced, Convert |
| View › Windows › Labeling | opens the pane |
| The layer's context menu | Label / Turn Labels Off, Labeling Properties… |
| The Labeling pane | all of the above, plus the classes, SQL, italic, font and line placement |
What this leads to:
- The ribbon always edits Default, while the pane edits the chosen class. With a class chosen in the pane, changing the size in the ribbon changes another class than the one on screen.
- Style › Label Class only picks the field; it doesn't choose a class.
- Labels on/off is in four places, and Lock, Pause and View Unplaced in two.
- The ribbon lacks what came later (italic, font, line placement), so each new setting means deciding again where it goes.
- The pane is one long column mixing the map (Lock, Pause, View Unplaced), the layer (on/off, Convert) and the class (everything else), and keeps growing downwards. While testing [Feature]: Choose, add, rename, remove and order label classes in the Labeling pane #722, Rename and Remove were taken for each other: two similar words, side by side.
More settings are coming (the query editor, and expression labels with offset, priority and halo colour and width on the roadmap), so the structure should be settled before they're added.
Proposed solution
Keep the commands as they are (labels.* with their optional class); change only where the controls sit and which class they edit. In four small pull requests, each usable on its own:
- The ribbon follows the pane's chosen class. Style's label groups read and write the class chosen in the Labeling pane (Default when none is chosen), and say which one, e.g. the group title or a small "Class: Capitals" line. Style › Label Class becomes the class chooser, with the field beside it.
- A class header in the pane. At the top: the layer, labels on/off, and the class chooser with its Visible box. New, Rename, Move Up and Move Down go in a "⋯" menu beside the chooser, with Remove last and apart from them.
- Tabs by topic under the header instead of stacked sections: Class (Field · SQL), Symbol, Position, Range. Each tab stays short, and the notes under SQL become one compact note.
- The map's settings leave the pane. Lock, Pause and View Unplaced apply to the whole map and are already in View › Labeling, so they go out of the pane. Convert to Annotation goes to the layer's header or its context menu.
Questions before starting:
- Should the ribbon show the chosen class (step 1), or should the ribbon stay on Default and say so?
- Tabs (step 3), or collapsible sections like other panes?
- Is moving Map Labeling out of the pane (step 4) fine, given View › Labeling has it?
- A Labeling ribbon tab was folded into Style on purpose in Reorganise the ribbon by task: Home, Data, Style, Edit, Analyze, View, Publish #99; this proposal keeps it there.
Estimated scope
Medium: a broader feature that is feasible in a reasonable timeframe
Alternatives considered
- Leave the ribbon on Default and only say so in its tooltips: no code moves, but the ribbon and the pane still show two different classes at once.
- Remove the label controls from the ribbon and keep only Label and Properties: one place for everything, but the quick access the ribbon gives is gone.
- Bring back a contextual Labeling ribbon tab: room for every setting, but Reorganise the ribbon by task: Home, Data, Style, Edit, Analyze, View, Publish #99 removed it on purpose.
- Keep the stacked sections and only regroup them: smaller, but the pane still grows downwards with every new setting.
Related: #617 (the Labeling pane), #618, #722 and #732 (label classes), #99 (ribbon by task), #651 (one undo step per drag).
Activity
jgregoriorincon commentedon Oct 25, 2026
I'm working on this.
deniial00 commentedon Oct 25, 2026
@jgregoriorincon thanks for writing this up, and go ahead with it. I noticed the same thing: label settings in five places, the ribbon editing Default while the pane edits another class, and the on/off toggle in four spots.
For me it's part of a bigger picture. I've been looking at the whole ribbon: every tab, group and dropdown, what each one opens, how often it's likely used, and where controls repeat. About 27 commands or panes can be reached from more than one place, and some panes have up to 8 buttons opening them. I'll open a discussion with my findings, plus some ideas for a ribbon overhaul and rules for what gets a button.
Your proposal fits well with that. On your questions:
I'll link the discussion here once it's up.
jgregoriorincon commentedon Oct 25, 2026
Thanks! I'll start with step 1 (the ribbon's class chooser) and keep it small, so it doesn't get in the way of the ribbon overhaul. Looking forward to the discussion.
deniial00 commentedon Oct 25, 2026
Hey, I created #862 - chime in!
jgregoriorincon commentedon Oct 25, 2026
Step 1 is in with #863: the ribbon's label groups now edit and choose the pane's class.
I'm working on step 2 now, the class header in the Labeling pane (branch
feat/label-class-header):labels.class.*commands will name "View › Windows › Labeling" as their location instead of "Style › Label Class", since those actions are only in the pane.I'll open the PR when it's ready.
feat(labels): a class header in the Labeling pane, with Remove set ap…
jgregoriorincon commentedon Oct 25, 2026
Step 2 is in with #892. I'm working on steps 3 and 4 together now:
I'll open the PR when it's ready.
fix(labels): a field filter per label class in the Labeling pane
feat(labels): the Labeling pane in a tab per topic, the map's setting…
fix(labels): a pick ends the field and font boxes' search
fix(labels): a layer without fields says so in the Field box
fix(labels): the field and font searches are kept per layer of a map
fix(labels): the field and font searches are kept per layer of a map,…
refactor(labels): the label field as a searchable box, as the font is (…
jgregoriorincon commentedon Oct 26, 2026
Steps 3 and 4 are in with #917, and #919 made the label field a searchable box like the font. The ribbon side is done too: #935 (closing #897) adds a fixed Labeling tab with the label groups in the pane's tab order.
One item is left from step 3: the notes under SQL (labels off, hidden class, "each class labels…") become one compact note. I'll open a small PR for it, and it will close this issue.
refactor(labels): one note under the label class SQL, the first thing…