Ticket #2648 (closed patch: fixed)

Opened 3 years ago

Last modified 3 years ago

Improve rendering of selected features with V2 symbology

Reported by: ccrook Owned by: nobody
Priority: major: does not work as expected Milestone: Version 1.5.0
Component: Symbology Version: Trunk
Keywords: selected symbols Cc:
Platform Version: Platform: All
Must Fix for Release: No Awaiting user input: no

Description

The current implementation of rendering of selected features with V2 rendering doesn't reflect the normal unselected symbology - it simply replaces points, lines, and polygons with a default renderer using the selected colour.

This patch suggests an alternative, in which the selected state is passed from the renderer into the symbol and symbol layers, and in which each symbol layer build its own implementation of selected rendering. This has been implemented for each of the core symbol layer types as follows: *Simple marker symbols: simple symbols are selected by setting the fill or border colour (for unfilled symbols or where the current fill colour is the same as the selected colour). If this doesn't differentiate the normal and selected version, then the selected version is completely filled with the selection colour. *SVN markers symbols: A circle in the selection colour is drawn under each SVN symbol *Font marker symbols: The font colour is changed to the selection colour *Line symbols - colours are changed to the selection colour *Polygon layers - colours are changed to the selection colour Also the transparency is disregarded for selected symbols - they are fully opaque

Attachments

selection_rendering_fix.diff Download (20.6 KB) - added by ccrook 3 years ago.
Patch to implement suggested change to rendering
selection_rendering_fix_sip.diff Download (0.7 KB) - added by ccrook 3 years ago.
Second part of patch - fixes SIP file to make required fields available to plugins
selection_rendering_fix_revised.diff Download (21.4 KB) - added by ccrook 3 years ago.
Replacement for above two patches - more logical implementation

Change History

Changed 3 years ago by ccrook

Patch to implement suggested change to rendering

Changed 3 years ago by lutra

Great! much awaited features. After applying this patch at least 2/3 tickets can be closed.

Changed 3 years ago by ccrook

Second part of patch - fixes SIP file to make required fields available to plugins

Changed 3 years ago by ccrook

I'm going to change the implementation slightly - I've put a method (selectionColor()) into the base QgsSymbologyLayerV2 class, but it belongs in the symbology render context. I'll put up a new patch shortly.

Changed 3 years ago by ccrook

Replacement for above two patches - more logical implementation

Changed 3 years ago by ccrook

Note: the selection_rendering_fix_revised patch includes the patches from both of the previous files. It also includes a fix to QgsFontMarkerSymbolLayerV2 to correct the scaling when it is printed or rendered to png/pdf etc via composer. Previously the raster scale factor wasn't being applied, which could result in the Font marker appearing hugely out of scale!

Changed 3 years ago by wonder

  • status changed from new to closed
  • resolution set to fixed

Looks good, applied in r13322. Thanks for contributing!

Martin

Changed 3 years ago by lutra

Please have a look to tickets #1786 and #1509

if you think that after this commit they can be closed, do so.

Note: See TracTickets for help on using tickets.