aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArtur Signell <artur.signell@itmill.com>2010-05-27 09:15:05 +0000
committerArtur Signell <artur.signell@itmill.com>2010-05-27 09:15:05 +0000
commit12e5f5e5aa852632b5f0c0783f3d1591354669c8 (patch)
tree2d422a9fb242e3f9587eef62e1e45164cc46e242
parente2867b081a01f0b419b38ca3539c3756df9736ec (diff)
downloadvaadin-framework-12e5f5e5aa852632b5f0c0783f3d1591354669c8.tar.gz
vaadin-framework-12e5f5e5aa852632b5f0c0783f3d1591354669c8.zip
Fixed #4251 - ArithmeticException when changing Select pageLength to 0
svn changeset:13389/svn branch:6.3
-rw-r--r--src/com/vaadin/terminal/gwt/client/ui/VFilterSelect.java2
-rw-r--r--src/com/vaadin/ui/Select.java4
-rw-r--r--tests/src/com/vaadin/tests/components/combobox/Comboboxes.html22
-rw-r--r--tests/src/com/vaadin/tests/components/combobox/Comboboxes.java14
4 files changed, 40 insertions, 2 deletions
diff --git a/src/com/vaadin/terminal/gwt/client/ui/VFilterSelect.java b/src/com/vaadin/terminal/gwt/client/ui/VFilterSelect.java
index 66e712f4da..6030236073 100644
--- a/src/com/vaadin/terminal/gwt/client/ui/VFilterSelect.java
+++ b/src/com/vaadin/terminal/gwt/client/ui/VFilterSelect.java
@@ -219,7 +219,7 @@ public class VFilterSelect extends Composite implements Paintable, Field,
}
// We don't need to show arrows or statusbar if there is only one
// page
- if (totalSuggestions <= pageLength) {
+ if (totalSuggestions <= pageLength || pageLength == 0) {
setPagingEnabled(false);
} else {
setPagingEnabled(true);
diff --git a/src/com/vaadin/ui/Select.java b/src/com/vaadin/ui/Select.java
index 4e4ab74215..467a21b259 100644
--- a/src/com/vaadin/ui/Select.java
+++ b/src/com/vaadin/ui/Select.java
@@ -258,7 +258,9 @@ public class Select extends AbstractSelect implements AbstractSelect.Filtering,
*/
private List sanitetizeList(List options, boolean needNullSelectOption) {
- if (options.size() > pageLength) {
+ if (pageLength != 0 && options.size() > pageLength) {
+ // Not all options are visible, find out which ones are on the
+ // current "page".
int first = currentPage * pageLength;
int last = first + pageLength;
if (needNullSelectOption) {
diff --git a/tests/src/com/vaadin/tests/components/combobox/Comboboxes.html b/tests/src/com/vaadin/tests/components/combobox/Comboboxes.html
index 8df7ea00ae..6f87903413 100644
--- a/tests/src/com/vaadin/tests/components/combobox/Comboboxes.html
+++ b/tests/src/com/vaadin/tests/components/combobox/Comboboxes.html
@@ -191,6 +191,28 @@
<td></td>
<td></td>
</tr>
+<!--Open pagelength 0 combobox and capture-->
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runcomvaadintestscomponentscomboboxComboboxes::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[9]/VFilterSelect[0]/domChild[1]</td>
+ <td>9,13</td>
+</tr>
+<tr>
+ <td>waitForVaadin</td>
+ <td></td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>pagelength-0-popup-open</td>
+</tr>
+<tr>
+ <td>waitForVaadin</td>
+ <td></td>
+ <td></td>
+</tr>
+<!--Start testing modes-->
<tr>
<td>mouseClick</td>
<td>vaadin=runcomvaadintestscomponentscomboboxComboboxes::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VHorizontalLayout[0]/ChildComponentContainer[1]/VCheckBox[0]/domChild[0]</td>
diff --git a/tests/src/com/vaadin/tests/components/combobox/Comboboxes.java b/tests/src/com/vaadin/tests/components/combobox/Comboboxes.java
index f55a252f10..39008f3db5 100644
--- a/tests/src/com/vaadin/tests/components/combobox/Comboboxes.java
+++ b/tests/src/com/vaadin/tests/components/combobox/Comboboxes.java
@@ -66,6 +66,20 @@ public class Comboboxes extends ComponentTestCase<ComboBox> {
populate(s, 50);
addTestComponent(s);
+ s = new PageLength0ComboBox();
+ s.setImmediate(true);
+ s.addContainerProperty(CAPTION, String.class, "");
+ s.setItemCaptionPropertyId(CAPTION);
+ s.setCaption("Pagelength 0");
+ populate(s, 15);
+ addTestComponent(s);
+ }
+
+ public class PageLength0ComboBox extends ComboBox {
+ public PageLength0ComboBox() {
+ super();
+ pageLength = 0;
+ }
}
private void populate(Select s, int nr) {