]> source.dussan.org Git - vaadin-framework.git/commitdiff
#5053 and #5083: Last ComboBox item may not be shown if null selection enabled, incor...
authorHenri Sara <henri.sara@itmill.com>
Thu, 27 May 2010 10:54:52 +0000 (10:54 +0000)
committerHenri Sara <henri.sara@itmill.com>
Thu, 27 May 2010 10:54:52 +0000 (10:54 +0000)
svn changeset:13393/svn branch:6.3

src/com/vaadin/terminal/gwt/client/ui/VFilterSelect.java
src/com/vaadin/ui/Select.java

index 60302360730b3f5cf9eab0bc357c2788ec0ab3e7..eb8dc857053cfd1c7d60730bc583db1d486bcb9e 100644 (file)
@@ -200,20 +200,18 @@ public class VFilterSelect extends Composite implements Paintable, Field,
             topPosition += tb.getOffsetHeight();
             setPopupPosition(x, topPosition);
 
-            int nullOffset = (nullSelectionAllowed ? 1 : 0);
+            int nullOffset = (nullSelectionAllowed && "".equals(lastFilter) ? 1
+                    : 0);
             boolean firstPage = (currentPage == 0);
             final int first = currentPage * pageLength + 1
                     - (firstPage ? 0 : nullOffset);
             final int last = first + currentSuggestions.size() - 1
-                    - (firstPage ? nullOffset : 0);
+                    - (firstPage && "".equals(lastFilter) ? nullOffset : 0);
             final int matches = totalSuggestions - nullOffset;
             if (last > 0) {
                 // nullsel not counted, as requested by user
-                DOM.setInnerText(status, (matches == 0 ? 0 : first)
-                        + "-"
-                        + ("".equals(lastFilter) && nullSelectionAllowed
-                                && currentPage == 0 ? last - 1 : last) + "/"
-                        + matches);
+                DOM.setInnerText(status, (matches == 0 ? 0 : first) + "-"
+                        + last + "/" + matches);
             } else {
                 DOM.setInnerText(status, "");
             }
index 467a21b2591a97f06d5946d9213924f4ed089aef..0f335297146ac4033e5b72898af2dd26d8bf6154 100644 (file)
@@ -165,11 +165,14 @@ public class Select extends AbstractSelect implements AbstractSelect.Filtering,
         }
 
         List options = getFilteredOptions();
-        options = sanitetizeList(options, needNullSelectOption);
+        boolean nullFilteredOut = filterstring != null
+                && !"".equals(filterstring)
+                && filteringMode != FILTERINGMODE_OFF;
+        options = sanitetizeList(options, needNullSelectOption
+                && !nullFilteredOut);
 
         final boolean paintNullSelection = needNullSelectOption
-                && (currentPage == 0 && (getFilteringMode() == FILTERINGMODE_OFF
-                        || filterstring == null || filterstring.equals("")));
+                && currentPage == 0 && !nullFilteredOut;
 
         if (paintNullSelection) {
             target.startTag("so");
@@ -218,7 +221,7 @@ public class Select extends AbstractSelect implements AbstractSelect.Filtering,
                 + (needNullSelectOption ? 1 : 0));
         if (filteredOptions != null) {
             target.addAttribute("totalMatches", filteredOptions.size()
-                    + (needNullSelectOption ? 1 : 0));
+                    + (needNullSelectOption && !nullFilteredOut ? 1 : 0));
         }
 
         // Paint variables