Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 363176
Collapse All | Expand All

(-)js/org/eclipse/rwt/widgets/Menu.js (-2 / +2 lines)
Lines 65-72 Link Here
65
  statics : {
65
  statics : {
66
    
66
    
67
    contextMenuHandler : function( event ) {
67
    contextMenuHandler : function( event ) {
68
      var widget = event.getCurrentTarget();
68
      var control = org.eclipse.swt.WidgetUtil.getControl( event.getTarget() );
69
      var contextMenu = widget.getContextMenu();
69
      var contextMenu = control ? control.getContextMenu() : null;
70
      if( contextMenu != null ) {
70
      if( contextMenu != null ) {
71
        event.stopPropagation();
71
        event.stopPropagation();
72
        contextMenu.setLocation( event.getPageX(), event.getPageY() );
72
        contextMenu.setLocation( event.getPageX(), event.getPageY() );
(-)js/org/eclipse/swt/WidgetUtil.js (-2 / +11 lines)
Lines 34-40 Link Here
34
        widget.setStyleProperty( "lineHeight", "0" );
34
        widget.setStyleProperty( "lineHeight", "0" );
35
      }
35
      }
36
    },
36
    },
37
    
37
38
    getControl : function( widget ) {
39
      var widgetManager = org.eclipse.swt.WidgetManager.getInstance();
40
      var result = widget;
41
      while( result != null && !widgetManager.isControl( result ) ) {
42
        result = result.getParent ? result.getParent() : null;
43
      }
44
      return result;
45
    },
46
38
    /**
47
    /**
39
     * Can be used simulate mouseEvents on the qooxdoo event-layer.
48
     * Can be used simulate mouseEvents on the qooxdoo event-layer.
40
     * Manager and handler that are usually notified by 
49
     * Manager and handler that are usually notified by 
Lines 74-77 Link Here
74
    }
83
    }
75
84
76
  }
85
  }
77
});
86
} );
(-)js/org/eclipse/rwt/test/tests/MenuTest.js (-3 / +35 lines)
Lines 203-208 Link Here
203
      this.menu.addMenuItemAt( this.menuItem, 0 );
203
      this.menu.addMenuItemAt( this.menuItem, 0 );
204
      var widget = new qx.ui.basic.Atom( "bla" );
204
      var widget = new qx.ui.basic.Atom( "bla" );
205
      widget.addToDocument();
205
      widget.addToDocument();
206
      widget.setUserData( "isControl", true );
206
      widget.setLocation( 10, 10 );
207
      widget.setLocation( 10, 10 );
207
      widget.setDimension( 10, 10 );
208
      widget.setDimension( 10, 10 );
208
      widget.setContextMenu( this.menu );
209
      widget.setContextMenu( this.menu );
Lines 233-239 Link Here
233
      var menu2 = new org.eclipse.rwt.widgets.Menu();
234
      var menu2 = new org.eclipse.rwt.widgets.Menu();
234
      menu1.setHasMenuListener( true );
235
      menu1.setHasMenuListener( true );
235
      menu2.setHasMenuListener( true );
236
      menu2.setHasMenuListener( true );
236
      var parent = new org.eclipse.swt.widgets.Composite();
237
      var parent = this._createControl();
237
      parent.addToDocument();    
238
      parent.addToDocument();    
238
      parent.setContextMenu( menu1 );
239
      parent.setContextMenu( menu1 );
239
      parent.addEventListener( 
240
      parent.addEventListener( 
Lines 242-247 Link Here
242
      var widget = new qx.ui.basic.Atom( "bla" );
243
      var widget = new qx.ui.basic.Atom( "bla" );
243
      widget.setContextMenu( menu2 );
244
      widget.setContextMenu( menu2 );
244
      widget.setParent( parent );
245
      widget.setParent( parent );
246
      widget.setUserData( "isControl", true );
245
      widget.addEventListener( 
247
      widget.addEventListener( 
246
        "contextmenu", 
248
        "contextmenu", 
247
        org.eclipse.rwt.widgets.Menu.contextMenuHandler );      
249
        org.eclipse.rwt.widgets.Menu.contextMenuHandler );      
Lines 699-704 Link Here
699
      widget.setLocation( 10, 10 );
701
      widget.setLocation( 10, 10 );
700
      widget.setDimension( 10, 10 );
702
      widget.setDimension( 10, 10 );
701
      widget.setContextMenu( this.menu );
703
      widget.setContextMenu( this.menu );
704
      widget.setUserData( "isControl", true );
702
      widget.addEventListener( 
705
      widget.addEventListener( 
703
        "contextmenu", 
706
        "contextmenu", 
704
        org.eclipse.rwt.widgets.Menu.contextMenuHandler );      
707
        org.eclipse.rwt.widgets.Menu.contextMenuHandler );      
Lines 728-733 Link Here
728
      this.menu.addMenuItemAt( this.menuItem, 0 );
731
      this.menu.addMenuItemAt( this.menuItem, 0 );
729
      var widget = new qx.ui.basic.Atom( "bla" );
732
      var widget = new qx.ui.basic.Atom( "bla" );
730
      widget.addToDocument();
733
      widget.addToDocument();
734
      widget.setUserData( "isControl", true );
731
      widget.setLocation( 10, 10 );
735
      widget.setLocation( 10, 10 );
732
      widget.setDimension( 10, 10 );
736
      widget.setDimension( 10, 10 );
733
      widget.setContextMenu( this.menu );
737
      widget.setContextMenu( this.menu );
Lines 743-749 Link Here
743
      widget2.setLocation( 20, 20 );
747
      widget2.setLocation( 20, 20 );
744
      widget2.setDimension( 20, 20 );
748
      widget2.setDimension( 20, 20 );
745
      widget2.setContextMenu( menu2 );
749
      widget2.setContextMenu( menu2 );
746
      widget2.addEventListener( 
750
      widget2.setUserData( "isControl", true );
751
      widget2.addEventListener(       
747
        "contextmenu", 
752
        "contextmenu", 
748
        org.eclipse.rwt.widgets.Menu.contextMenuHandler );
753
        org.eclipse.rwt.widgets.Menu.contextMenuHandler );
749
      this.testUtil.flush();
754
      this.testUtil.flush();
Lines 789-794 Link Here
789
      menuItem2.setText( "bla" ); 
794
      menuItem2.setText( "bla" ); 
790
      menu2.addMenuItemAt( menuItem2, 0 );
795
      menu2.addMenuItemAt( menuItem2, 0 );
791
      var widget = new qx.ui.basic.Atom( "bla" );
796
      var widget = new qx.ui.basic.Atom( "bla" );
797
      widget.setUserData( "isControl", true );
792
      widget.addToDocument();
798
      widget.addToDocument();
793
      widget.setLocation( 10, 10 );
799
      widget.setLocation( 10, 10 );
794
      widget.setDimension( 10, 10 );
800
      widget.setDimension( 10, 10 );
Lines 962-968 Link Here
962
      this.menuItem.setText( "bla" ); 
968
      this.menuItem.setText( "bla" ); 
963
      this.menu.addMenuItemAt( this.menuItem, 0 );
969
      this.menu.addMenuItemAt( this.menuItem, 0 );
964
      var widget = new qx.ui.basic.Atom( "bla" );
970
      var widget = new qx.ui.basic.Atom( "bla" );
965
      var parent = new qx.ui.layout.CanvasLayout();
971
      var parent = this._createControl();
966
      parent.add( widget );
972
      parent.add( widget );
967
      parent.addToDocument();
973
      parent.addToDocument();
968
      parent.setLocation( 10, 10 );
974
      parent.setLocation( 10, 10 );
Lines 989-994 Link Here
989
      widget.dispose();
995
      widget.dispose();
990
      this.disposeMenu();            
996
      this.disposeMenu();            
991
    },
997
    },
998
    
999
    testContextmenuNotOpenOnParentControl : function() {
1000
      var menu1 = new org.eclipse.rwt.widgets.Menu();
1001
      menu1.setHasMenuListener( true );
1002
      var parent = this._createControl();
1003
      parent.addToDocument();    
1004
      parent.setContextMenu( menu1 );
1005
      parent.addEventListener( 
1006
        "contextmenu", 
1007
        org.eclipse.rwt.widgets.Menu.contextMenuHandler );      
1008
      var widget = this._createControl();
1009
      widget.setParent( parent );
1010
      this.testUtil.flush();
1011
      assertFalse( menu1.isSeeable() );
1012
      this.testUtil.rightClick( widget );
1013
      assertFalse( menu1.isSeeable() );
1014
      menu1.destroy();            
1015
      widget.destroy();
1016
      parent.destroy();
1017
    },
992
        
1018
        
993
    /************************* Helper *****************************/
1019
    /************************* Helper *****************************/
994
        
1020
        
Lines 1108-1113 Link Here
1108
        layout.arrowWidth = nodeBounds.width;
1134
        layout.arrowWidth = nodeBounds.width;
1109
      }
1135
      }
1110
      return layout;
1136
      return layout;
1137
    },
1138
    
1139
    _createControl : function() {
1140
      var result = new org.eclipse.swt.widgets.Composite();
1141
      result.setUserData( "isControl", true );
1142
      return result;
1111
    }
1143
    }
1112
    
1144
    
1113
  }
1145
  }

Return to bug 363176