diff --git a/src/case/list/list.select.js b/src/case/list/list.select.js
index 12f71e383..12037b9a9 100644
--- a/src/case/list/list.select.js
+++ b/src/case/list/list.select.js
@@ -93,10 +93,23 @@ BI.SelectList = BI.inherit(BI.Widget, {
         var notSelectLength = this.getAllLeaves().length - selectLength;
         var hasNext = this.list.hasNext();
         var isAlreadyAllSelected = this.toolbar.isSelected();
-        var isHalf = selectLength > 0 && (notSelectLength > 0 || (!isAlreadyAllSelected && hasNext));
-        isHalf = isHalf || (notSelectLength > 0 && hasNext && isAlreadyAllSelected);
+        var isHalf = selectLength > 0 && notSelectLength > 0;
+        var allSelected = isAlreadyAllSelected;
+
+        if (this.isAllSelected() === false) {
+            hasNext && (isHalf = selectLength > 0);
+            if (!isAlreadyAllSelected && notSelectLength === 0 && !hasNext) {
+                allSelected = true;
+            }
+        } else {
+            hasNext && (isHalf = notSelectLength > 0);
+            if (!isAlreadyAllSelected && notSelectLength === 0) {
+                allSelected = true;
+            }
+        }
+
         this.toolbar.setHalfSelected(isHalf);
-        !isHalf && this.toolbar.setSelected(selectLength > 0 && notSelectLength <= 0 && (!hasNext || isAlreadyAllSelected));
+        !isHalf && this.toolbar.setSelected(allSelected);
     },
 
     setAllSelected: function (v) {