* #26787 Replaced buttons by DnD
diff --git a/src/com/savoirfairelinux/sflphone/model/Bubble.java b/src/com/savoirfairelinux/sflphone/model/Bubble.java
index f416169..b22e0bf 100644
--- a/src/com/savoirfairelinux/sflphone/model/Bubble.java
+++ b/src/com/savoirfairelinux/sflphone/model/Bubble.java
@@ -168,19 +168,6 @@
         canvas.drawBitmap(circle, 0, 0, circlePaint);
         circle_drawer.drawOval(new RectF(0, 0, internalBMP.getWidth(), internalBMP.getHeight()), circlePaint);
 
-        int[] allpixels = new int[internalBMP.getHeight() * internalBMP.getWidth()];
-
-        internalBMP.getPixels(allpixels, 0, internalBMP.getWidth(), 0, 0, internalBMP.getWidth(), internalBMP.getHeight());
-
-        for (int i = 0; i < internalBMP.getHeight() * internalBMP.getWidth(); i++) {
-//            Log.i("Bubble", "allpixels[i]:"+allpixels[i]);
-            if (allpixels[i] == Color.BLACK) {
-                Log.i("Bubble", "replacing color");
-                allpixels[i] = 0xAA000000;
-            }
-        }
-        
-        internalBMP.setPixels(allpixels, 0, internalBMP.getWidth(), 0, 0, internalBMP.getWidth(), internalBMP.getHeight());
         externalBMP = Bitmap.createBitmap((int) (getRadius() * 2), (int) (getRadius() * 2), Bitmap.Config.ARGB_8888);
         Canvas canvasf = new Canvas(externalBMP);
 
@@ -194,6 +181,19 @@
         fatality.setStyle(Paint.Style.FILL);
 
         canvasf.drawOval(new RectF(0, 0, getRadius() * 2, getRadius() * 2), mPaintPath); // background with buttons
+        
+        int[] allpixels = new int[internalBMP.getHeight() * internalBMP.getWidth()];
+
+        internalBMP.getPixels(allpixels, 0, internalBMP.getWidth(), 0, 0, internalBMP.getWidth(), internalBMP.getHeight());
+        for (int i = 0; i < internalBMP.getHeight() * internalBMP.getWidth(); i++) {
+            // Log.i("Bubble", "allpixels[i]:"+allpixels[i]);
+            if (allpixels[i] == Color.BLACK) {
+                Log.i("Bubble", "replacing color");
+                allpixels[i] = 0xAA000000;
+            }
+        }
+        internalBMP.setPixels(allpixels, 0, internalBMP.getWidth(), 0, 0, internalBMP.getWidth(), internalBMP.getHeight());
+        
         canvasf.drawBitmap(internalBMP, (float) (getRadius() - radius), (float) (getRadius() - radius), fatality);
 
     }
diff --git a/src/com/savoirfairelinux/sflphone/model/BubbleModel.java b/src/com/savoirfairelinux/sflphone/model/BubbleModel.java
index 1a69796..2032e6e 100644
--- a/src/com/savoirfairelinux/sflphone/model/BubbleModel.java
+++ b/src/com/savoirfairelinux/sflphone/model/BubbleModel.java
@@ -185,12 +185,6 @@
 
     public Bubble getBubble(SipCall call) {
         for(Bubble b : bubbles){
-            if(call == null){
-                Log.e(TAG, "call null");
-            } 
-            if(b.associated_call.getCallId() == null){
-                Log.e(TAG, "id null");
-            }
             if(b.associated_call.getCallId().contentEquals(call.getCallId()))
                 return b;
         }
diff --git a/src/com/savoirfairelinux/sflphone/model/BubblesView.java b/src/com/savoirfairelinux/sflphone/model/BubblesView.java
index 077f1bf..a29d8ab 100644
--- a/src/com/savoirfairelinux/sflphone/model/BubblesView.java
+++ b/src/com/savoirfairelinux/sflphone/model/BubblesView.java
@@ -267,16 +267,19 @@
 

                     for (int i = 0, n = bubbles.size(); i < n; i++) {

                         Bubble b = bubbles.get(i);

+                        if(b.expanded){

+                            continue;

+                        }

                         canvas.drawBitmap(b.getBitmap(), null, b.getBounds(), null);

                         canvas.drawText(b.associated_call.getContact().getmDisplayName(), b.getPosX(),

-                                (float) (b.getPosY() - b.getRetractedRadius() * 1.5 * density), getNamePaint(b));

+                                (float) (b.getPosY() - b.getRetractedRadius() * 1.2 * density), getNamePaint(b));

                     }

                     Bubble first_plan = getExpandedBubble();

                     if (first_plan != null) {

                         canvas.drawBitmap(first_plan.getBitmap(), null, first_plan.getBounds(), null);

                         

                         canvas.drawText(first_plan.associated_call.getContact().getmDisplayName(), first_plan.getPosX(),

-                                (float) (first_plan.getPosY() - first_plan.getRetractedRadius() * 1.5 * density), getNamePaint(first_plan));

+                                (float) (first_plan.getPosY() - first_plan.getRetractedRadius() * 1.2 * density), getNamePaint(first_plan));

                         

                         canvas.drawText("Transfer", first_plan.getPosX(), (float) (first_plan.getPosY() + first_plan.getRetractedRadius() * 1.5

                                 * density), getNamePaint(first_plan));

diff --git a/src/com/savoirfairelinux/sflphone/model/CallContact.java b/src/com/savoirfairelinux/sflphone/model/CallContact.java
index adfd61d..bc720a0 100644
--- a/src/com/savoirfairelinux/sflphone/model/CallContact.java
+++ b/src/com/savoirfairelinux/sflphone/model/CallContact.java
@@ -49,7 +49,7 @@
 
     private CallContact(long cID, String displayName, long photoID, ArrayList<Phone> p, ArrayList<Phone> sip, String mail, boolean user) {
         id = cID;
-        mDisplayName = displayName.substring(0, displayName.length() > 10 ? 10 : displayName.length());
+        mDisplayName = displayName;
         phones = p;
         sip_phones = sip;
         mEmail = mail;
diff --git a/src/com/savoirfairelinux/sflphone/model/Conference.java b/src/com/savoirfairelinux/sflphone/model/Conference.java
index 4418210..c242b4d 100644
--- a/src/com/savoirfairelinux/sflphone/model/Conference.java
+++ b/src/com/savoirfairelinux/sflphone/model/Conference.java
@@ -107,6 +107,28 @@
         }
         return null;
     }
+    
+    /**
+     * Compare conferences based on confID/participants
+     */
+    @Override
+    public boolean equals(Object c) {
+        if (c instanceof Conference) {
+            if(((Conference) c).id.contentEquals(id) && !id.contentEquals("-1")){
+                return true;
+            } else {
+                if(((Conference) c).id.contentEquals(id)){
+                    for (int i = 0; i < participants.size(); ++i) {
+                        if (!((Conference) c).contains(participants.get(i).getCallId()))
+                            return false;
+                    }
+                    return true;
+                }
+            }
+        }
+        return false;
+
+    }
 
     public boolean hasMultipleParticipants() {
         return participants.size() > 1;
diff --git a/src/com/savoirfairelinux/sflphone/model/SipCall.java b/src/com/savoirfairelinux/sflphone/model/SipCall.java
index 3f38733..2d83e99 100644
--- a/src/com/savoirfairelinux/sflphone/model/SipCall.java
+++ b/src/com/savoirfairelinux/sflphone/model/SipCall.java
@@ -349,7 +349,7 @@
      */
     @Override
     public boolean equals(Object c) {
-        if (c instanceof SipCall && ((SipCall) c).mCallID == mCallID) {
+        if (c instanceof SipCall && ((SipCall) c).mCallID.contentEquals((mCallID))) {
             return true;
         }
         return false;