From feb9a8c3510afc76c079fafcd9e507205bde139c Mon Sep 17 00:00:00 2001 From: Artur Signell Date: Tue, 23 Apr 2013 10:36:44 +0300 Subject: [PATCH] Different fix for #11152 which is restricted to the problematic case in horizontal layout Change-Id: I4727f0a8f0b82f14f059c7e47a1819a18630a4c0 --- .../VAADIN/themes/base/common/common.scss | 6 -- .../VAADIN/themes/base/layout/layout.scss | 5 ++ .../combobox/ComboBoxCursorPositionReset.java | 55 +++++++++++++++++++ 3 files changed, 60 insertions(+), 6 deletions(-) create mode 100644 uitest/src/com/vaadin/tests/components/combobox/ComboBoxCursorPositionReset.java diff --git a/WebContent/VAADIN/themes/base/common/common.scss b/WebContent/VAADIN/themes/base/common/common.scss index d6dfed11df..e7fdd3fe84 100644 --- a/WebContent/VAADIN/themes/base/common/common.scss +++ b/WebContent/VAADIN/themes/base/common/common.scss @@ -204,12 +204,6 @@ body &.v-app-loading { padding: 2px; } -/* Fix for IE9 caret bug #11152 */ -input, -textarea { - position: relative; -} - .v-drag-element { z-index: 60000; /* override any other position: properties */ diff --git a/WebContent/VAADIN/themes/base/layout/layout.scss b/WebContent/VAADIN/themes/base/layout/layout.scss index d49b2ad0dd..049c527518 100644 --- a/WebContent/VAADIN/themes/base/layout/layout.scss +++ b/WebContent/VAADIN/themes/base/layout/layout.scss @@ -105,6 +105,11 @@ div.v-layout.v-horizontal.v-widget { height: 100%; } +/* Workaround for IE8+IE9 bug where clicking inside an input area which is inside a div with negative margin causes cursor position to jump to wrong position. See #11152 */ +.v-horizontal > .v-expand > .v-slot { + position: relative; +} + .v-vertical > .v-spacing, .v-vertical > .v-expand > .v-spacing { width: 0; diff --git a/uitest/src/com/vaadin/tests/components/combobox/ComboBoxCursorPositionReset.java b/uitest/src/com/vaadin/tests/components/combobox/ComboBoxCursorPositionReset.java new file mode 100644 index 0000000000..20a62f2a33 --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/combobox/ComboBoxCursorPositionReset.java @@ -0,0 +1,55 @@ +/* + * Copyright 2000-2013 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.combobox; + +import com.vaadin.server.VaadinRequest; +import com.vaadin.tests.components.AbstractTestUI; +import com.vaadin.ui.ComboBox; +import com.vaadin.ui.HorizontalLayout; +import com.vaadin.ui.Label; + +public class ComboBoxCursorPositionReset extends AbstractTestUI { + + @Override + protected void setup(VaadinRequest request) { + final HorizontalLayout root = new HorizontalLayout(); + root.setSizeFull(); + setContent(root); + + ComboBox combo = new ComboBox(); + combo.setImmediate(true); + root.addComponent(combo); + combo.addItem("Hello World"); + combo.addItem("Please click on the text"); + + combo.setValue("Please click on the text"); + Label gap = new Label(); + root.addComponent(gap); + root.setExpandRatio(gap, 1); + + } + + @Override + protected String getTestDescription() { + return "Clicking on the text in the ComboBox should position the caret where you clicked, not cause it to jump to the start or the end"; + } + + @Override + protected Integer getTicketNumber() { + return 11152; + } + +} -- 2.39.5