From 835c03b8633454861b491dd6053a990579e19de8 Mon Sep 17 00:00:00 2001 From: Johannes Dahlström Date: Thu, 14 Jun 2012 08:18:04 +0000 Subject: #7766 Applied Sami's patch svn changeset:23935/svn branch:6.8 --- .../gwt/client/ui/VDragAndDropWrapper.java | 9 +++- .../TooltipHandlingWhenNotDefined.html | 52 ++++++++++++++++++++++ .../TooltipHandlingWhenNotDefined.java | 40 +++++++++++++++++ 3 files changed, 100 insertions(+), 1 deletion(-) create mode 100644 tests/testbench/com/vaadin/tests/components/draganddropwrapper/TooltipHandlingWhenNotDefined.html create mode 100644 tests/testbench/com/vaadin/tests/components/draganddropwrapper/TooltipHandlingWhenNotDefined.java diff --git a/src/com/vaadin/terminal/gwt/client/ui/VDragAndDropWrapper.java b/src/com/vaadin/terminal/gwt/client/ui/VDragAndDropWrapper.java index ff649ebeb1..c16ad8a76f 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VDragAndDropWrapper.java +++ b/src/com/vaadin/terminal/gwt/client/ui/VDragAndDropWrapper.java @@ -62,6 +62,8 @@ public class VDragAndDropWrapper extends VCustomComponent implements private static final String CLASSNAME = "v-ddwrapper"; protected static final String DRAGGABLE = "draggable"; + private boolean hasTooltip = false; + public VDragAndDropWrapper() { super(); sinkEvents(VTooltip.TOOLTIP_EVENTS); @@ -94,7 +96,8 @@ public class VDragAndDropWrapper extends VCustomComponent implements public void onBrowserEvent(Event event) { super.onBrowserEvent(event); - if (client != null) { + if (hasTooltip && client != null) { + // Override child tooltips if the wrapper has a tooltip defined client.handleTooltipEvent(event, this); } } @@ -158,6 +161,10 @@ public class VDragAndDropWrapper extends VCustomComponent implements this.client = client; super.updateFromUIDL(uidl, client); if (!uidl.hasAttribute("cached") && !uidl.hasAttribute("hidden")) { + + // Used to prevent wrapper from stealing tooltips when not defined + hasTooltip = uidl.hasAttribute("description"); + UIDL acceptCrit = uidl.getChildByTagName("-ac"); if (acceptCrit == null) { dropHandler = null; diff --git a/tests/testbench/com/vaadin/tests/components/draganddropwrapper/TooltipHandlingWhenNotDefined.html b/tests/testbench/com/vaadin/tests/components/draganddropwrapper/TooltipHandlingWhenNotDefined.html new file mode 100644 index 0000000000..4d2fde6b45 --- /dev/null +++ b/tests/testbench/com/vaadin/tests/components/draganddropwrapper/TooltipHandlingWhenNotDefined.html @@ -0,0 +1,52 @@ + + + + + + +TooltipHandlingWhenNotDefined + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TooltipHandlingWhenNotDefined
open/run/com.vaadin.tests.components.draganddropwrapper.TooltipHandlingWhenNotDefined?restartApplication
mouseOvervaadin=runcomvaadintestscomponentsdraganddropwrapperTooltipHandlingWhenNotDefined::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VDragAndDropWrapper[0]/VCssLayout[0]/VCssLayout$FlowPane[0]/VLabel[0]
pause5000
screenCapturetooltip_shown
mouseOutvaadin=runcomvaadintestscomponentsdraganddropwrapperTooltipHandlingWhenNotDefined::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VDragAndDropWrapper[0]/VCssLayout[0]/VCssLayout$FlowPane[0]/VLabel[0]
pause2000
screenCapturetooltip_hidden
+ + diff --git a/tests/testbench/com/vaadin/tests/components/draganddropwrapper/TooltipHandlingWhenNotDefined.java b/tests/testbench/com/vaadin/tests/components/draganddropwrapper/TooltipHandlingWhenNotDefined.java new file mode 100644 index 0000000000..4b07175cd8 --- /dev/null +++ b/tests/testbench/com/vaadin/tests/components/draganddropwrapper/TooltipHandlingWhenNotDefined.java @@ -0,0 +1,40 @@ +package com.vaadin.tests.components.draganddropwrapper; + +import com.vaadin.tests.components.TestBase; +import com.vaadin.ui.CssLayout; +import com.vaadin.ui.DragAndDropWrapper; +import com.vaadin.ui.DragAndDropWrapper.DragStartMode; +import com.vaadin.ui.Label; + +public class TooltipHandlingWhenNotDefined extends TestBase { + + @Override + protected void setup() { + + CssLayout wrapperLayout = new CssLayout(); + wrapperLayout.setWidth("100%"); + + Label label = new Label("Can I has the tooltip?", Label.CONTENT_XHTML); + label.setDescription("Good! Tooltip works!"); + label.setSizeUndefined(); + wrapperLayout.addComponent(label); + + DragAndDropWrapper wrapper = new DragAndDropWrapper(wrapperLayout); + wrapper.setWidth("100%"); + wrapper.setDragStartMode(DragStartMode.WRAPPER); + + addComponent(wrapper); + + } + + @Override + protected String getDescription() { + return "Wrapper most not prevent child from showing tooltip"; + } + + @Override + protected Integer getTicketNumber() { + return 7766; + } + +} -- cgit v1.2.3