Make DropDown wider if sum of column width is greater than parent width
diff --git a/bundles/org.eclipse.rap.addons.dropdown/js/rwt/dropdown/DropDown.js b/bundles/org.eclipse.rap.addons.dropdown/js/rwt/dropdown/DropDown.js
index 6d200be..8245c2e 100644
--- a/bundles/org.eclipse.rap.addons.dropdown/js/rwt/dropdown/DropDown.js
+++ b/bundles/org.eclipse.rap.addons.dropdown/js/rwt/dropdown/DropDown.js
@@ -315,15 +315,29 @@
     var padding = getPadding();
     var itemHeight = Math.floor( font.getSize() * 1.3 ) + padding[ 0 ] + padding[ 2 ];
     var visibleItems = Math.min( this._.visibleItemCount, this.getItemCount() );
-    var gridWidth = this._.parent.getWidth() - FRAMEWIDTH;
+    var gridWidth = calcGridWidth.apply( this );
     var gridHeight = visibleItems * itemHeight;
     this._.popup.positionRelativeTo( this._.parent, 0, yOffset );
-    this._.popup.setWidth( this._.parent.getWidth() );
+    this._.popup.setWidth( gridWidth + FRAMEWIDTH );
     this._.popup.setHeight( gridHeight + FRAMEWIDTH );
     this._.grid.setDimension( gridWidth, gridHeight );
     renderItemMetrics.apply( this, [ itemHeight, gridWidth, padding ] );
   };
 
+  var calcGridWidth = function() {
+    var result = this._.parent.getWidth() - FRAMEWIDTH;
+    if( this._.columns ) {
+      var columnsSum = 0;
+      for( var i = 0; i < this._.columns.length; i++ ) {
+        columnsSum += this._.columns[ i ];
+      }
+      if( columnsSum > result ) {
+        result = columnsSum;
+      }
+    }
+    return result;
+  };
+
   var renderItemMetrics = function( itemHeight, itemWidth, padding ) {
     this._.grid.setItemHeight( itemHeight );
     if( this._.columns != null ) {
diff --git a/examples/org.eclipse.rap.addons.dropdown.demo/src/org/eclipse/rap/addons/dropdown/demo/DropDownDemo.java b/examples/org.eclipse.rap.addons.dropdown.demo/src/org/eclipse/rap/addons/dropdown/demo/DropDownDemo.java
index 809391b..750fc77 100644
--- a/examples/org.eclipse.rap.addons.dropdown.demo/src/org/eclipse/rap/addons/dropdown/demo/DropDownDemo.java
+++ b/examples/org.eclipse.rap.addons.dropdown.demo/src/org/eclipse/rap/addons/dropdown/demo/DropDownDemo.java
@@ -119,7 +119,7 @@
         dropdown.hide();
       }
     } );
-    dropdown.setData( "columns", new int[] { 130, 60 } );
+    dropdown.setData( "columns", new int[] { 300, 60 } );
   }
 
   private void createKFZExample( Composite parent ) {
diff --git a/tests/org.eclipse.rap.addons.dropdown.test/js/rwt/dropdown/DropDown_Test.js b/tests/org.eclipse.rap.addons.dropdown.test/js/rwt/dropdown/DropDown_Test.js
index 3a27dc2..f32a0de 100644
--- a/tests/org.eclipse.rap.addons.dropdown.test/js/rwt/dropdown/DropDown_Test.js
+++ b/tests/org.eclipse.rap.addons.dropdown.test/js/rwt/dropdown/DropDown_Test.js
@@ -483,6 +483,20 @@
       assertEquals( 40 - PADDING_RIGHT - PADDING_LEFT, config.itemTextWidth[ 1 ] );
     },
 
+    testSetColumns_setsPopUpWidth : function() {
+      dropdown.setColumns( [ 100, 200, 100 ] );
+      showDropDown();
+
+      assertEquals( 400, popup.getInnerWidth() );
+    },
+
+    testSetColumns_setsDoesNotSetPopUpWidthIfSmaller : function() {
+      dropdown.setColumns( [ 30 ] );
+      showDropDown();
+
+      assertEquals( 100, popup.getWidth() );
+    },
+
     testSetColumns_separatesItemsByTabulator : function() {
       dropdown.setColumns( [ 30, 40 ] );
       var tab = String.fromCharCode( 9 );