Index: clock.c
===================================================================
--- clock.c	(revision 11266)
+++ clock.c	(working copy)
@@ -150,6 +150,8 @@
 	GtkWidget *minutes_spin;
 	GtkWidget *seconds_spin;
 	GtkWidget *set_time_button;
+	GtkWidget *show_weather_toggle;
+	GtkWidget *show_temperature_toggle;
 
 	GtkListStore *cities_store;
         GtkWidget *cities_section;
@@ -236,6 +238,7 @@
 				  ClockData         *cd);
 
 static void edit_hide (GtkWidget *unused, ClockData *cd);
+static void update_show_weather_toggles (ClockData *cd);
 static gboolean edit_delete (GtkWidget *unused, GdkEvent *event, ClockData *cd);
 static void save_cities_store (ClockData *cd);
 
@@ -3177,12 +3180,25 @@
 }
 
 static void
+update_show_weather_toggles (ClockData *cd)
+{
+    if (cd->locations && g_list_length (cd->locations) > 0) {
+        gtk_widget_set_sensitive (cd->show_weather_toggle, TRUE);
+        gtk_widget_set_sensitive (cd->show_temperature_toggle, TRUE);
+    } else {
+        gtk_widget_set_sensitive (cd->show_weather_toggle, FALSE);
+        gtk_widget_set_sensitive (cd->show_temperature_toggle, FALSE);
+    }
+}
+
+static void
 edit_hide (GtkWidget *unused, ClockData *cd)
 {
         GtkWidget *edit_window = glade_xml_get_widget (cd->glade_xml, "edit-location-window");
 
         gtk_widget_hide (edit_window);
         edit_clear (cd);
+        update_show_weather_toggles (cd);
 }
 
 static gboolean
@@ -3253,6 +3269,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_show_weather_toggles (cd);
 }
 
 static void
@@ -3462,17 +3480,25 @@
                           G_CALLBACK (set_show_seconds_cb), cd);
 
 	/* Set the "Show weather" checkbox */
-	widget = glade_xml_get_widget (cd->glade_xml, "weather_check");
-	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), cd->show_weather);
-	g_signal_connect (widget, "toggled",
+	cd->show_weather_toggle = glade_xml_get_widget (cd->glade_xml,
+                                                    "weather_check");
+	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (cd->show_weather_toggle),
+                                  cd->show_weather);
+	g_signal_connect (cd->show_weather_toggle, "toggled",
                           G_CALLBACK (set_show_weather_cb), cd);
 
 	/* Set the "Show temperature" checkbox */
-	widget = glade_xml_get_widget (cd->glade_xml, "temperature_check");
-	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), cd->show_temperature);
-	g_signal_connect (widget, "toggled",
+	cd->show_temperature_toggle = glade_xml_get_widget (cd->glade_xml,
+                                                        "temperature_check");
+	gtk_toggle_button_set_active (
+                        GTK_TOGGLE_BUTTON (cd->show_temperature_toggle),
+                        cd->show_temperature);
+	g_signal_connect (cd->show_temperature_toggle, "toggled",
                           G_CALLBACK (set_show_temperature_cb), cd);
 
+	/* If no locations de-sensitize show_toggles */
+	update_show_weather_toggles (cd);
+
 	/* Fill the Cities list */
 	widget = glade_xml_get_widget (cd->glade_xml, "cities_list");
 
@@ -3536,8 +3562,10 @@
         GtkTreeSelection *selection;
         GWeatherLocation *world;
 
-        if (cd->prefs_window)
+        if (cd->prefs_window) {
+                update_show_weather_toggles (cd);
                 return;
+        }
 
         cd->prefs_window = glade_xml_get_widget (cd->glade_xml, "prefs-window");
 
