]> source.dussan.org Git - vaadin-framework.git/commitdiff
action menu of table now triggers even though context click happened on a component...
authorMatti Tahvonen <matti.tahvonen@itmill.com>
Wed, 16 Jun 2010 21:01:11 +0000 (21:01 +0000)
committerMatti Tahvonen <matti.tahvonen@itmill.com>
Wed, 16 Jun 2010 21:01:11 +0000 (21:01 +0000)
better support for drag and drop in derived classes (TreeTable)

svn changeset:13718/svn branch:6.4

src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java

index 9a9aaab587c931b3d3a6f89bf677f7917305d459..3e48e1fe2cfba000df820c8d434a5c56905ff675 100644 (file)
@@ -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<? extends Widget> 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;