From: Matti Tahvonen Date: Wed, 16 Jun 2010 21:01:11 +0000 (+0000) Subject: action menu of table now triggers even though context click happened on a component... X-Git-Tag: 6.7.0.beta1~1578 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=aeca38ec83becb8623d0835c49dc235dab600918;p=vaadin-framework.git action menu of table now triggers even though context click happened on a component (like textfield) #4264 better support for drag and drop in derived classes (TreeTable) svn changeset:13718/svn branch:6.4 --- diff --git a/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java b/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java index 9a9aaab587..3e48e1fe2c 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java +++ b/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java @@ -3688,8 +3688,15 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler, public void onBrowserEvent(Event event) { if (enabled) { Element targetTdOrTr = getEventTargetTdOrTr(event); + int type = event.getTypeInt(); + if (type == Event.ONCONTEXTMENU) { + showContextMenu(event); + event.stopPropagation(); + return; + } + if (targetTdOrTr != null) { - switch (DOM.eventGetType(event)) { + switch (type) { case Event.ONDBLCLICK: handleClickEvent(event, targetTdOrTr); break; @@ -3757,9 +3764,6 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler, sendSelectedRows(); } break; - case Event.ONCONTEXTMENU: - showContextMenu(event); - break; case Event.ONMOUSEDOWN: if (dragmode != 0 && event.getButton() == NativeEvent.BUTTON_LEFT) { @@ -4573,8 +4577,7 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler, dropDetails = new TableDDDetails(); Element elementOver = drag.getElementOver(); - VScrollTableRow row = Util.findWidget(elementOver, - VScrollTableRow.class); + VScrollTableRow row = Util.findWidget(elementOver, getRowClass()); if (row != null) { dropDetails.overkey = row.rowKey; Element tr = row.getElement(); @@ -4598,6 +4601,12 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler, } + private Class getRowClass() { + // get the row type this way to make dd work in derived + // implementations + return scrollBody.iterator().next().getClass(); + } + @Override public void dragOver(VDragEvent drag) { TableDDDetails oldDetails = dropDetails;