Index: data/themes/widgets/check.edc
===================================================================
--- data/themes/widgets/check.edc	(revision 82795)
+++ data/themes/widgets/check.edc	(working copy)
@@ -550,14 +550,14 @@ group { name: "elm/check/base/toggle";
 
             if (!get_int(was_drag)) {
                if (dx > 0.5)
-                  set_drag(PART:"button", 0.0, 0.0);
+                 set_drag(PART:"button", 0.0, 0.0);
                else
-                  set_drag(PART:"button", 1.0, 0.0);
+                 set_drag(PART:"button", 1.0, 0.0);
                if (((get_int(is_rtl) == 1) && (dx <= 0.5)) ||
                    (get_int(is_rtl) == 0) && (dx > 0.5))
-                  emit("elm,action,check,off", "");
+                 emit("elm,action,check,off", "");
                else
-                  emit("elm,action,check,on", "");
+                 emit("elm,action,check,on", "");
             }
          }
       }
@@ -576,29 +576,25 @@ group { name: "elm/check/base/toggle";
             set_int(is_drag, 0);
          }
       }
-      program { name:   "drag_end";
+      program { name: "drag_end";
          signal: "mouse,up,1";
          source: "button";
          script {
             new Float:dx, Float:dy;
             get_drag(PART:"button", dx, dy);
-            if (dx > 0.5)
-            {
-               set_drag(PART:"button", 1.0, 0.0);
+            if (get_int(is_drag)) {
+               if (dx > 0.5)
+                 set_drag(PART:"button", 1.0, 0.0);
+               else
+                 set_drag(PART:"button", 0.0, 0.0);
+               if (((get_int(is_rtl) == 1) && (dx <= 0.5)) ||
+                   (get_int(is_rtl) == 0) && (dx > 0.5))
+                 emit("elm,action,check,on", "");
+               else
+                 emit("elm,action,check,off", "");
+               set_int(was_drag, 1);
+               set_int(is_drag, 0);
             }
-            else
-            {
-               set_drag(PART:"button", 0.0, 0.0);
-            }
-            if (((get_int(is_rtl) == 1) && (dx <= 0.5)) ||
-                (get_int(is_rtl) == 0) && (dx > 0.5)) {
-               emit("elm,action,check,on", "");
-            }
-            else {
-               emit("elm,action,check,off", "");
-            }
-            set_int(was_drag, get_int(is_drag));
-            set_int(is_drag, 0);
          }
       }
       program { name: "check_on";
