[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [40270] branches/soc-2011-onion-uv-tools/ source/blender/editors/uvedit: It' s again possible to deselect a stitchable vertex even if deselecting its stitchable counterpart .

Antony Riakiotakis kalast at gmail.com
Fri Sep 16 19:28:37 CEST 2011


Revision: 40270
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=40270
Author:   psy-fi
Date:     2011-09-16 17:28:36 +0000 (Fri, 16 Sep 2011)
Log Message:
-----------
It's again possible to deselect a stitchable vertex even if deselecting its stitchable counterpart. Some comment corrections.

Modified Paths:
--------------
    branches/soc-2011-onion-uv-tools/source/blender/editors/uvedit/uvedit_intern.h
    branches/soc-2011-onion-uv-tools/source/blender/editors/uvedit/uvedit_ops.c

Modified: branches/soc-2011-onion-uv-tools/source/blender/editors/uvedit/uvedit_intern.h
===================================================================
--- branches/soc-2011-onion-uv-tools/source/blender/editors/uvedit/uvedit_intern.h	2011-09-16 17:18:12 UTC (rev 40269)
+++ branches/soc-2011-onion-uv-tools/source/blender/editors/uvedit/uvedit_intern.h	2011-09-16 17:28:36 UTC (rev 40270)
@@ -55,7 +55,7 @@
 	float *previewQuads;
 	/* ...and here we'll store the triangles*/
 	float *previewTris;
-	/* Preview data.These will be either the previewed vertices or edges depending on tool settings */
+	/* Preview data. These will be either the previewed vertices or edges depending on stitch mode settings */
 	float *previewStitchable;
 	float *previewUnstitchable;
 	/* here we'll store the number of triangles and quads to be drawn */

Modified: branches/soc-2011-onion-uv-tools/source/blender/editors/uvedit/uvedit_ops.c
===================================================================
--- branches/soc-2011-onion-uv-tools/source/blender/editors/uvedit/uvedit_ops.c	2011-09-16 17:18:12 UTC (rev 40269)
+++ branches/soc-2011-onion-uv-tools/source/blender/editors/uvedit/uvedit_ops.c	2011-09-16 17:28:36 UTC (rev 40270)
@@ -2632,29 +2632,32 @@
 						#ifdef STITCHNEW
 						int uniqueIndex;
 						/* This works due to setting of tmp in find nearest uv vert */
-						UvElement *unique_element, *element = get_uv_element(stitch_state->elementMap, hit.efa, hit.uv);
+						UvElement *element_iter, *unique_element, *element = get_uv_element(stitch_state->elementMap, hit.efa, hit.uv);
 						uniqueIndex = stitch_state->map[element - stitch_state->elementMap->buf];
 						unique_element = stitch_state->uvs[uniqueIndex];
-						if(event->ctrl){
-							/* remove element from selection stack */
-							if(unique_element->flag & STITCH_SELECTED){
-								int i;
-								unique_element->flag &= ~STITCH_SELECTED;
-								for(i = 0; i < stitch_state->selection_size; i++){
-									if(((UvElement *)stitch_state->selection_stack[i]) == unique_element){
-										--stitch_state->selection_size;
-										stitch_state->selection_stack[i] = stitch_state->selection_stack[stitch_state->selection_size];
-										break;
+						element_iter = stitch_state->elementMap->vert[(*(&hit.efa->v1 + hit.uv))->tmp.l];
+						/* first deselect all common uvs */
+						for(; element_iter; element_iter = element_iter->next){
+							if(element_iter->separate){
+								/* only separators go to selection */
+								if(element_iter->flag & STITCH_SELECTED){
+									int i;
+									element_iter->flag &= ~STITCH_SELECTED;
+									for(i = 0; i < stitch_state->selection_size; i++){
+										if(((UvElement *)stitch_state->selection_stack[i]) == element_iter){
+											--stitch_state->selection_size;
+											stitch_state->selection_stack[i] = stitch_state->selection_stack[stitch_state->selection_size];
+											break;
+										}
 									}
 								}
 							}
-						}else{
-							if(!(unique_element->flag & STITCH_SELECTED)){
-								unique_element->flag |= STITCH_SELECTED;
-								stitch_state->selection_stack[stitch_state->selection_size++] = unique_element;
-							}
 						}
-
+						/* Then, if user wants to select, simply add the uvelement under mouse */
+						if(!event->ctrl && !(unique_element->flag & STITCH_SELECTED)){
+							unique_element->flag |= STITCH_SELECTED;
+							stitch_state->selection_stack[stitch_state->selection_size++] = unique_element;
+						}
 						#else
 						UvElement *element = stitch_state->elementMap->vert[(*(&hit.efa->v1 + hit.uv))->tmp.l];
 						UvElement *firstCoincident;




More information about the Bf-blender-cvs mailing list