From aeca38ec83becb8623d0835c49dc235dab600918 Mon Sep 17 00:00:00 2001 From: Matti Tahvonen Date: Wed, 16 Jun 2010 21:01:11 +0000 Subject: [PATCH] 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 --- .../terminal/gwt/client/ui/VScrollTable.java | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) 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; -- 2.39.5