Bubbles cleanup and bug fixes.
diff --git a/src/com/savoirfairelinux/sflphone/model/BubbleModel.java b/src/com/savoirfairelinux/sflphone/model/BubbleModel.java
index 87d3718..5631a86 100644
--- a/src/com/savoirfairelinux/sflphone/model/BubbleModel.java
+++ b/src/com/savoirfairelinux/sflphone/model/BubbleModel.java
@@ -101,7 +101,8 @@
 				PointF attractor_pos = b.attractor;
 				float attractor_dist = (attractor_pos.x-bx)*(attractor_pos.x-bx) + (attractor_pos.y-by)*(attractor_pos.x-by);
 
-				for(Attractor t : attractors) {
+				for(int j=0; j<attr_n; j++) {
+					Attractor t = attractors.get(j);
 					float dx = t.pos.x-bx, dy = t.pos.y-by;
 					float adist = dx*dx + dy*dy;
 					if(adist < attractor_dist) {
@@ -163,9 +164,13 @@
 				b.setPos((float)(bx+dx), (float)(by+dy));
 
 				if(attractor != null && attractor_dist < attractor_dist_suck*attractor_dist_suck) {
-					attractor.callback.onBubbleSucked(b);
-					bubbles.remove(b);
-					n--;
+					b.dragged = false;
+					if(attractor.callback.onBubbleSucked(b)) {
+						bubbles.remove(b);
+						n--;
+					} else {
+						b.target_scale = 1.f;
+					}
 				}
 			}