Selaa lähdekoodia

Fix Grid editor area calculation without scrollbars (#17471)

Change-Id: I55791e0bf46b00ea90daaeb1af8b4ca2748ff9d1
tags/7.4.5
Teemu Suo-Anttila 9 vuotta sitten
vanhempi
commit
6de23550af

+ 2
- 0
WebContent/VAADIN/themes/base/grid/grid.scss Näytä tiedosto

@@ -228,6 +228,8 @@ $v-grid-editor-background-color: $v-grid-row-background-color !default;
left: 0;
right: 0;
border: $v-grid-border;
box-sizing: border-box;
-moz-box-sizing: border-box;
margin-top: nth($v-grid-border, 1) * -1;
@include box-shadow(0 0 9px rgba(0,0,0,.2));
}

+ 3
- 6
client/src/com/vaadin/client/widgets/Grid.java Näytä tiedosto

@@ -1473,10 +1473,8 @@ public class Grid<T> extends ResizeComposite implements
}

// Do not render over the vertical scrollbar
int nativeScrollbarSize = WidgetUtil.getNativeScrollbarSize();
if (nativeScrollbarSize > 0) {
editorOverlay.getStyle().setRight(nativeScrollbarSize, Unit.PX);
}
editorOverlay.getStyle().setWidth(grid.escalator.getInnerWidth(),
Unit.PX);
}

private boolean buttonsShouldBeRenderedBelow(TableRowElement tr) {
@@ -2200,8 +2198,7 @@ public class Grid<T> extends ResizeComposite implements
// If selection cell already contains a widget do not
// create a new CheckBox
HeaderCell selectionCell = header.getDefaultRow().getCell(this);
if (selectionCell.getType()
.equals(GridStaticCellType.WIDGET)
if (selectionCell.getType().equals(GridStaticCellType.WIDGET)
&& selectionCell.getWidget() instanceof CheckBox) {
return;
}

+ 53
- 0
uitest/src/com/vaadin/tests/components/grid/GridEditingWithNoScrollBars.java Näytä tiedosto

@@ -0,0 +1,53 @@
/*
* Copyright 2000-2014 Vaadin Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.vaadin.tests.components.grid;

import com.vaadin.server.VaadinRequest;
import com.vaadin.tests.components.AbstractTestUI;
import com.vaadin.ui.ComboBox;
import com.vaadin.ui.Grid;
import com.vaadin.ui.Grid.Column;
import com.vaadin.ui.Grid.SelectionMode;

public class GridEditingWithNoScrollBars extends AbstractTestUI {

@Override
protected void setup(VaadinRequest request) {
Grid grid = new Grid();
grid.addColumn("foo", String.class);
grid.addColumn("bar", String.class);
for (int i = 0; i < 10; ++i) {
grid.addRow("foo", "" + (i % 3 + 1));
}

ComboBox stCombo = new ComboBox();
stCombo.addItem("" + 1);
stCombo.addItem("" + 2);
stCombo.addItem("" + 3);
stCombo.setNullSelectionAllowed(false);
stCombo.setSizeFull();

Column stCol = grid.getColumn("bar");
stCol.setEditorField(stCombo);

grid.setSelectionMode(SelectionMode.SINGLE);
grid.setEditorEnabled(true);
grid.setSizeFull();

addComponent(grid);
}

}

+ 36
- 0
uitest/src/com/vaadin/tests/components/grid/GridEditingWithNoScrollBarsTest.java Näytä tiedosto

@@ -0,0 +1,36 @@
/*
* Copyright 2000-2014 Vaadin Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.vaadin.tests.components.grid;

import static org.junit.Assert.assertEquals;

import org.junit.Test;

import com.vaadin.testbench.elements.GridElement;
import com.vaadin.tests.tb3.MultiBrowserTest;

public class GridEditingWithNoScrollBarsTest extends MultiBrowserTest {

@Test
public void testEditorWideEnough() {
openTestURL();

GridElement grid = $(GridElement.class).first();
grid.getCell(1, 1).doubleClick();
assertEquals(grid.getEditor().getSize().width, grid.getTableWrapper()
.getSize().width);
}
}

Loading…
Peruuta
Tallenna