Makes bubble and event info in search update tz

Also fix for b/3044748 by moving rebuilding of views into
onResume if we were notified of a change while paused. Also
discovered that if search activity refreshes with a single
event earlier than today it doesn't requery correctly and
fails to expand to the event.

Change-Id: Id55fc8b0effe05bf35f2c4ebd71d70826784174b
diff --git a/src/com/android/calendar/CalendarController.java b/src/com/android/calendar/CalendarController.java
index b4c04de..23cf49a 100644
--- a/src/com/android/calendar/CalendarController.java
+++ b/src/com/android/calendar/CalendarController.java
@@ -60,6 +60,8 @@
     private LinkedHashMap<Integer,EventHandler> eventHandlers =
             new LinkedHashMap<Integer,EventHandler>(5);
     private LinkedList<Integer> mToBeRemovedEventHandlers = new LinkedList<Integer>();
+    private LinkedHashMap<Integer, EventHandler> mToBeAddedEventHandlers = new LinkedHashMap<
+            Integer, EventHandler>();
     private boolean mDispatchInProgress;
 
     private static WeakHashMap<Context, CalendarController> instances =
@@ -330,6 +332,8 @@
                 }
             }
 
+            mDispatchInProgress = false;
+
             // Deregister removed handlers
             if (mToBeRemovedEventHandlers.size() > 0) {
                 for (Integer zombie : mToBeRemovedEventHandlers) {
@@ -337,7 +341,12 @@
                 }
                 mToBeRemovedEventHandlers.clear();
             }
-            mDispatchInProgress = false;
+            // Add new handlers
+            if (mToBeAddedEventHandlers.size() > 0) {
+                for (Entry<Integer, EventHandler> food : mToBeAddedEventHandlers.entrySet()) {
+                    eventHandlers.put(food.getKey(), food.getValue());
+                }
+            }
         }
 
         if (!handled) {
@@ -377,7 +386,11 @@
      */
     public void registerEventHandler(int key, EventHandler eventHandler) {
         synchronized (this) {
-            eventHandlers.put(key, eventHandler);
+            if (mDispatchInProgress) {
+                mToBeAddedEventHandlers.put(key, eventHandler);
+            } else {
+                eventHandlers.put(key, eventHandler);
+            }
         }
     }