[glabels/vala] Use stacking order correctly when selecting and locating handles.



commit 758640ab1f40b56d9c00becc9f1ec861418f090c
Author: Jim Evins <evins snaught com>
Date:   Fri Mar 30 22:02:37 2012 -0400

    Use stacking order correctly when selecting and locating handles.

 glabels/handle.vala |    2 +-
 glabels/label.vala  |   17 ++++++++++++-----
 2 files changed, 13 insertions(+), 6 deletions(-)
---
diff --git a/glabels/handle.vala b/glabels/handle.vala
index 8e9121b..7c8b060 100644
--- a/glabels/handle.vala
+++ b/glabels/handle.vala
@@ -33,7 +33,7 @@ namespace glabels
 
 	public abstract class Handle
 	{
-		public LabelObject    owner { get; protected set; }
+		public weak LabelObject owner { get; protected set; }
 
 		public abstract void draw( Cairo.Context cr );
 		public abstract void cairo_path( Cairo.Context cr );
diff --git a/glabels/label.vala b/glabels/label.vala
index 693447b..b43845d 100644
--- a/glabels/label.vala
+++ b/glabels/label.vala
@@ -346,8 +346,10 @@ namespace glabels
 		                               double        x_pixels,
 		                               double        y_pixels )
 		{
-			foreach ( LabelObject object in object_list )
+			for ( unowned List<LabelObject>? p = object_list.last(); p != null; p = p.prev ) 
 			{
+				LabelObject object = p.data;
+
 				if ( object.is_located_at( cr, x_pixels, y_pixels ) )
 				{
 					return object;
@@ -362,13 +364,18 @@ namespace glabels
 		                          double        x_pixels,
 		                          double        y_pixels )
 		{
-			foreach ( LabelObject object in object_list )
+			for ( unowned List<LabelObject>? p = object_list.last(); p != null; p = p.prev ) 
 			{
-				Handle? handle = object.handle_at( cr, x_pixels, y_pixels );
+				LabelObject object = p.data;
 
-				if ( handle != null )
+				if ( object.is_selected() )
 				{
-					return handle;
+					Handle? handle = object.handle_at( cr, x_pixels, y_pixels );
+
+					if ( handle != null )
+					{
+						return handle;
+					}
 				}
 			}
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]