e055eea93b771ba27c3e32e036d6966a75d17c73
diff --git a/ChangeLog b/ChangeLog
index 60dc321..59803d8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2008-07-02  Mathias Hasselmann  <mathias@openismus.com>
+
+	Support UTC timezone as special location. Fixes bug #541145.
+
+	* applets/clock/clock-zonetable.c (clock_zonetable_add(),
+	  clock_zonetable_load_zonetab()): Add hard-coded UTC zone info.
+
+	* applets/clock/clock.c (fill_location_tree):
+	  Add hard-coded UTC GWeather location to location tree model.
+
 2008-06-17  Vincent Untz  <vuntz@gnome.org>
 
 	* configure.in: post-release bump to 2.23.5.
diff --git a/applets/clock/clock-zonetable.c b/applets/clock/clock-zonetable.c
index a46a097..f6efa91 100644
--- a/applets/clock/clock-zonetable.c
+++ b/applets/clock/clock-zonetable.c
@@ -270,6 +270,21 @@ clock_zonetable_parse_iso3166_line (const gchar *line)
 }
 
 static void
+clock_zonetable_add (ClockZoneTablePrivate *priv,
+                     ClockZoneInfo         *info)
+{
+        priv->list = g_list_prepend (priv->list, info);
+        /* note that it's fine to cast to char * since the
+         * ClockZoneinfo object is ref'ed from inside the hash table */
+        g_hash_table_replace (priv->table,
+                              (char *) clock_zoneinfo_get_name (info),
+                              g_object_ref_sink (info));
+        g_hash_table_replace (priv->l10n_table,
+                              (char *) clock_zoneinfo_get_l10n_name (info),
+                              g_object_ref_sink (info));
+}
+
+static void
 clock_zonetable_load_zonetab (ClockZoneTable *this)
 {
         ClockZoneTablePrivate *priv = PRIVATE (this);
@@ -308,19 +323,13 @@ clock_zonetable_load_zonetab (ClockZoneTable *this)
                 if (!info)
                         continue;
 
-                priv->list = g_list_prepend (priv->list, info);
-		/* note that it's fine to cast to char * since the
-		 * ClockZoneinfo object is ref'ed from inside the hash table */
-                g_hash_table_replace (priv->table,
-                                      (char *) clock_zoneinfo_get_name (info),
-                                      g_object_ref_sink (info));
-                g_hash_table_replace (priv->l10n_table,
-                                      (char *) clock_zoneinfo_get_l10n_name (info),
-                                      g_object_ref_sink (info));
+                clock_zonetable_add (priv, info);
         }
         g_free (old_line);
 
         g_io_channel_unref (channel);
+
+        clock_zonetable_add (priv, clock_zoneinfo_new ("UTC", "Global", NULL, 51.4772, 0));
 }
 
 static void
diff --git a/applets/clock/clock.c b/applets/clock/clock.c
index 7ca7e92..249be95 100644
--- a/applets/clock/clock.c
+++ b/applets/clock/clock.c
@@ -3383,8 +3383,10 @@ fill_location_tree (ClockData *cd)
 {
 	GtkTreeView *tree;
 	GtkTreeModel *model;
+	GtkTreeStore *store;
 	GtkTreeViewColumn *column;
 	GtkCellRenderer *cell;
+	GtkTreeIter iter;
 
 	tree = (GtkTreeView*) cd->location_tree;
 
@@ -3401,6 +3403,16 @@ fill_location_tree (ClockData *cd)
                           G_CALLBACK (location_row_activated), cd);
 
 	model = gweather_xml_load_locations ();
+	store = GTK_TREE_STORE (model);
+
+	gtk_tree_store_append (store, &iter, NULL);
+
+	gtk_tree_store_set
+		(store, &iter,
+		 GWEATHER_XML_COL_LOC, _("Universal Coordinated Time"),
+		 GWEATHER_XML_COL_POINTER, weather_location_new
+			(_("Universal Coordinated Time"), NULL, NULL, NULL,
+			 "51-28-38N 0-0-0E", NULL, "GMT"), -1);
 
 	/* Can be NULL if libgweather is not correctly installed */
 	if (model) {
