Index: clock.c
===================================================================
--- clock.c	(revision 11267)
+++ clock.c	(working copy)
@@ -1980,23 +1980,49 @@
 static void
 update_panel_weather (ClockData *cd)
 {
-        if (cd->show_weather)
-                gtk_widget_show (cd->panel_weather_icon);
-        else
-                gtk_widget_hide (cd->panel_weather_icon);
+    if (cd->show_weather)
+        gtk_widget_show (cd->panel_weather_icon);
+    else
+        gtk_widget_hide (cd->panel_weather_icon);
 
-        if (cd->show_temperature)
-                gtk_widget_show (cd->panel_temperature_label);
-        else
-                gtk_widget_hide (cd->panel_temperature_label);
+    if (cd->show_temperature)
+        gtk_widget_show (cd->panel_temperature_label);
+    else
+        gtk_widget_hide (cd->panel_temperature_label);
 
-	if ((cd->show_weather || cd->show_temperature) &&
-	    g_list_length (cd->locations) > 0)
-                gtk_widget_show (cd->weather_obox);
-        else
-                gtk_widget_hide (cd->weather_obox);
+    if ((cd->show_weather || cd->show_temperature) &&
+        g_list_length (cd->locations) > 0) {
+        ClockLocation *loc = NULL;
+        GList *locations, *l;
+        gboolean current_found = FALSE;
 
-	gtk_widget_queue_resize (cd->applet);
+        /* Need to process locations, if there is no current
+           location then hide the weather/temperature box on panel */
+        for (l = locations; l; l = l->next) {
+            loc = l->data;
+            if (clock_location_is_current (loc)) {
+                current_found = TRUE;
+                break;
+            }
+        }
+        if (current_found == FALSE) {
+            gtk_widget_hide (cd->weather_obox);
+        } else {
+            gtk_widget_show (cd->weather_obox);
+        }
+    } else {
+        gtk_widget_hide (cd->weather_obox);
+    }
+
+    if (g_list_length (cd->locations) <= 0) {
+        if (cd->panel_weather_icon)
+            gtk_image_set_from_pixbuf (GTK_IMAGE (cd->panel_weather_icon),
+                                       NULL);
+        if (cd->panel_temperature_label)
+            gtk_label_set_text (GTK_LABEL (cd->panel_temperature_label), "");
+    }
+
+    gtk_widget_queue_resize (cd->applet);
 }
 
 static void
@@ -2092,20 +2118,9 @@
 	ClockLocation *loc;
 	glong id;
 
-	if (!cd->locations) {
-		if (cd->weather_obox)
-			gtk_widget_hide (cd->weather_obox);
-		if (cd->panel_weather_icon)
-			gtk_image_set_from_pixbuf (GTK_IMAGE (cd->panel_weather_icon),
-						   NULL);
-		if (cd->panel_temperature_label)
-			gtk_label_set_text (GTK_LABEL (cd->panel_temperature_label),
-					    "");
-	} else {
-		if (cd->weather_obox)
-			gtk_widget_show (cd->weather_obox);
-	}
 
+    update_panel_weather (cd);
+
 	for (l = cd->locations; l; l = l->next) {
 		loc = l->data;
 
@@ -3253,6 +3268,8 @@
         GtkTreeSelection *sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (cd->prefs_locations));
 
         gtk_tree_selection_selected_foreach (sel, remove_tree_row, cd);
+
+        update_panel_weather (cd);
 }
 
 static void
