Index: wp-includes/widgets.php
===================================================================
--- wp-includes/widgets.php	(revision 6719)
+++ wp-includes/widgets.php	(working copy)
@@ -159,7 +159,7 @@
 /* $options: height, width, id_base
  *   height: never used
  *   width:  width of fully expanded control form.  Try hard to use the default width.
- *   id_base: for multi-widgets (widgets which allow multiple instances such as the text widget), an id_base must be provided.
+ *   id_base: for widgets which allow multiple instances (such as the text widget), an id_base must be provided.
  *            the widget id will ennd up looking like {$id_base}-{$unique_number}
  */
 function wp_register_widget_control($id, $name, $control_callback, $options = array()) {
@@ -1317,18 +1317,42 @@
 	extract($args);
 	$options = get_option('widget_tag_cloud');
 	$title = empty($options['title']) ? __('Tags') : $options['title'];
+	$smallest = empty($options['smallest']) ? __('8') : $options['smallest'];
+	$largest = empty($options['largest']) ? __('22') : $options['largest'];
+	$unit = empty($options['unit']) ? __('pt') : $options['unit'];
+	$number = empty($options['number']) ? __('45') : $options['number'];
+	$format = empty($options['format']) ? __('flat') : $options['format'];
+	$orderby = empty($options['orderby']) ? __('name') : $options['orderby'];
+	$order = empty($options['order']) ? __('ASC') : $options['order'];
 
 	echo $before_widget;
 	echo $before_title . $title . $after_title;
-	wp_tag_cloud();
+	wp_tag_cloud('smallest='.$smallest.'&largest='.$largest.'&unit='.$unit.'&number='.$number.'&format='.$format.'&orderby='.$orderby.'&order='.$order);
 	echo $after_widget;
 }
 
 function wp_widget_tag_cloud_control() {
 	$options = $newoptions = get_option('widget_tag_cloud');
 
+	$smallest = 8;
+	$largest = 22;
+	$unit = 'pt';
+	$number = 45;
+	$format = 'flat';
+	$orderby = 'name';
+	$order = 'ASC';
+	$exclude = '';
+	$include = '';
+
 	if ( $_POST['tag-cloud-submit'] ) {
 		$newoptions['title'] = strip_tags(stripslashes($_POST['tag-cloud-title']));
+		$newoptions['smallest'] = strip_tags(stripslashes($_POST['tag-cloud-minsize']));
+		$newoptions['largest'] = strip_tags(stripslashes($_POST['tag-cloud-maxsize']));
+		$newoptions['unit'] = strip_tags(stripslashes($_POST['tag-cloud-unit']));
+		$newoptions['number'] = strip_tags(stripslashes($_POST['tag-cloud-number']));
+		$newoptions['format'] = strip_tags(stripslashes($_POST['tag-cloud-format']));
+		$newoptions['orderby'] = strip_tags(stripslashes($_POST['tag-cloud-orderby']));
+		$newoptions['order'] = strip_tags(stripslashes($_POST['tag-cloud-order']));
 	}
 
 	if ( $options != $newoptions ) {
@@ -1337,10 +1361,48 @@
 	}
 
 	$title = attribute_escape( $options['title'] );
+	$smallest = attribute_escape( $options['smallest'] );
+	$largest = attribute_escape( $options['largest'] );
+	$unit = attribute_escape( $options['unit'] );
+	$number = attribute_escape( $options['number'] );
+	$format = attribute_escape( $options['format'] );
+	$orderby = attribute_escape( $options['orderby'] );
+	$order = attribute_escape( $options['order'] );
 ?>
 	<p><label for="tag-cloud-title">
 	<?php _e('Title:') ?> <input type="text" class="widefat" id="tag-cloud-title" name="tag-cloud-title" value="<?php echo $title ?>" /></label>
 	</p>
+	<p><label for="tag-cloud-maxsize">
+	<?php _e('Maximum Font Size:')?> <input type="text" class="" id="tag-cloud-maxsize" name="tag-cloud-maxsize" value="<?php echo $largest ?>" size="4" /></label>
+	</p>
+	<p><label for="tag-cloud-minsize">
+	<?php _e('Minimum Font Size:')?> <input type="text" class="" id="tag-cloud-minsize" name="tag-cloud-minsize" value="<?php echo $smallest ?>" size="4" /></label>
+	</p>
+	<p><label for="tag-cloud-unit">
+	<?php _e('Unit:')?> <input type="text" class="" id="tag-cloud-unit" name="tag-cloud-unit" value="<?php echo $unit ?>" size="4" /></label>
+	</p>
+	<p><label for="tag-cloud-number">
+	<?php _e('Number:')?> <input type="text" class="" id="tag-cloud-number" name="tag-cloud-number" value="<?php echo $number ?>" size="4" /></label>
+	</p>
+	<p><label for="tag-cloud-format">
+	<?php _e('Format:')?> <select size="1" id="tag-cloud-format" name="tag-cloud-format">
+			<option value="flat" <?php if($format == 'flat'){echo "selected";}?>>Flat</option>
+			<option value="list" <?php if($format == 'list'){echo "selected";}?>>List</option>
+			<option value="array" <?php if($format == 'array'){echo "selected";}?>>Array</option>
+		</select></label>
+	</p>
+	<p><label for="tag-cloud-orderby">
+	<?php _e('Order By:')?> <select size="1" id="tag-cloud-orderby" name="tag-cloud-orderby">
+			<option value="name" <?php if($orderby == 'name'){echo "selected";}?>>Name</option>
+			<option value="count" <?php if($orderby == 'count'){echo "selected";}?>>Count</option>
+		</select></label>
+	</p>
+	<p><label for="tag-cloud-order">
+	<?php _e('Order:')?> <select size="1" id="tag-cloud-order" name="tag-cloud-order">
+			<option value="ASC" <?php if($order == 'ASC'){echo "selected";}?>>Ascending</option>
+			<option value="DESC" <?php if($order == 'DESC'){echo "selected";}?>>Descending</option>
+		</select></label>
+	</p>
 	<input type="hidden" name="tag-cloud-submit" id="tag-cloud-submit" value="1" />
 <?php
 }
@@ -1389,7 +1451,7 @@
 
 add_action('init', 'wp_widgets_init', 1);
 
-/* Pattern for multi-widget (allows multiple instances such as the text widget).
+/* Pattern for widget which allows multiple instances (such as the text widget)
 
 // Displays widget on blag
 // $widget_args: number
