Part of GSoC 2021 project : UV Editor Improvements - T88990
This is a **work in progress** patch to add Edge selection support for the UV editor - T76545
Changes made so far :
* Add UV edge selection flag - MLOOPUV_EDGESEL
* Drawing selected UV edges - UV edges are now drawn as a 6 vertex polygons, where the additional 2 vertices lie at the edge center. For selection states where only edge vertices are selected, the edge center will not be highlighted (orange). This helps in differentiating between selected and unselected UV edges for all selection states where both UV vertices are highlighted (orange).
* Refactor existing UV selection functions to use the edge selection flag wherever required
* Refactor existing functions used to check the selection states of UVs. These functions now use edge selection flag wherever required
* Refactor UV selection operators to use the edge selection flag :
* Mouse select
* Box select
* Circle select
* Lasso select
* (De)Select All
* Invert selection
* Select more/less
* Select split
* Select pinned
* Loop select
* Edge ring select
* New functions for selecting vertices or edges that share the same location, either on 3D mesh or in UV space.
* Functions for flushing selections between UV vertices and edges (select mode independent)
* Add small penalty while searching for the nearest UV edge. Ensures that UV edge selection will select other edges sharing the same location in successive selection attempts.
* Restore BMLoopUV.select_edge boolean in Python API
Design limitations :
* Presently there's no way to flush selections based on UV select modes since switching selection states in UV editor is done using RNA props and not using an operator
* Abruptly changing sticky selection modes without clearing the previous selections creates edge cases. In case the user decides to switch sticky selection modes, he/she would have to manually redo all the selections in the new sticky selection mode
Issues fixed so far :
* T76343
* T78757
* T65836
* T26676
* T79148