Index: src/wp-admin/js/widgets.js
===================================================================
--- src/wp-admin/js/widgets.js	(revision 27871)
+++ src/wp-admin/js/widgets.js	(working copy)
@@ -170,6 +170,7 @@
 
 					wpWidgets.save( $widget, 0, 0, 1 );
 					$widget.find('input.add_new').val('');
+					$( document ).trigger( 'widget-added', [ wpWidgets._widgetModel( $widget ) ] );
 				}
 
 				$sidebar = $widget.parent();
@@ -374,8 +375,9 @@
 			} else {
 				$('.spinner').hide();
 				if ( r && r.length > 2 ) {
-					$( 'div.widget-content', widget ).html(r);
+					$( 'div.widget-content', widget ).html( r );
 					wpWidgets.appendTitle( widget );
+					$( document ).trigger( 'widget-updated', [ wpWidgets._widgetModel( widget ) ] );
 				}
 			}
 			if ( order ) {
@@ -440,6 +442,8 @@
 		// No longer "new" widget
 		widget.find( 'input.add_new' ).val('');
 
+		$( document ).trigger( 'widget-added', [ wpWidgets._widgetModel( widget ) ] );
+
 		/*
 		 * Check if any part of the sidebar is visible in the viewport. If it is, don't scroll.
 		 * Otherwise, scroll up to so the sidebar is in view.
@@ -478,6 +482,19 @@
 	clearWidgetSelection: function() {
 		$( '#widgets-left' ).removeClass( 'chooser' );
 		$( '.widget-in-question' ).removeClass( 'widget-in-question' );
+	},
+
+	_widgetModel: function( $widget ) {
+		return {
+			$el: $widget,
+			id: $widget.find( 'input[name="widget-id"]' ).val(),
+			idBase: $widget.find( 'input[name="id_base"]' ).val(),
+			sidebarId: $widget.closest( 'div.widgets-sortables' ).attr( 'id' ),
+			width: $widget.find( 'input[name="widget-width"]' ).val(),
+			height: $widget.find( 'input[name="widget-height"]' ).val(),
+			number: $widget.find( 'input[name="widget_number"]' ).val(),
+			multiNumber: $widget.find( 'input[name="multi_number"]' ).val()
+		};
 	}
 };
 
