Index: src/wp-includes/widgets.php
===================================================================
--- src/wp-includes/widgets.php	(revision 29774)
+++ src/wp-includes/widgets.php	(working copy)
@@ -182,13 +182,14 @@
 	 *	Just finds the instance and calls widget().
 	 *	Do NOT over-ride this function. */
 	public function display_callback( $args, $widget_args = 1 ) {
-		if ( is_numeric($widget_args) )
+		if ( is_numeric( $widget_args ) ) {
 			$widget_args = array( 'number' => $widget_args );
+		}

 		$widget_args = wp_parse_args( $widget_args, array( 'number' => -1 ) );
 		$this->_set( $widget_args['number'] );
 		$instance = $this->get_settings();
-
+
 		if ( array_key_exists( $this->number, $instance ) ) {
 			$instance = $instance[$this->number];

@@ -203,6 +204,8 @@
 			 * @param WP_Widget $this     The current widget instance.
 			 * @param array     $args     An array of default widget arguments.
 			 */
+
+			$instance['widget_area'] = $args;
 			$instance = apply_filters( 'widget_display_callback', $instance, $this, $args );

 			if ( false === $instance ) {
@@ -335,6 +338,11 @@
 		 * @param array     $instance The current widget instance's settings.
 		 * @param WP_Widget $this     The current widget instance.
 		 */
+
+		$sidebar_id = is_active_widget( true, $this->id );
+		if ( $sidebar_id !== false ) {
+			$instance[ 'widget_area'][ 'id' ] = $sidebar_id;
+		}
 		$instance = apply_filters( 'widget_form_callback', $instance, $this );

 		$return = null;
