[gnome-shell] dateMenu: Only use nearest city when appropriate
- From: Florian Müllner <fmuellner src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] dateMenu: Only use nearest city when appropriate
- Date: Sat, 28 Mar 2020 16:33:38 +0000 (UTC)
commit de16fe8dff8e132f04395d660ad3a0b13a736f7a
Author: Florian Müllner <fmuellner gnome org>
Date: Sat Mar 28 02:54:14 2020 +0100
dateMenu: Only use nearest city when appropriate
Since commit 784c0b7e4 we use the name of the nearest city rather
than the weather station, as the latter tend to have unwieldy
and weird names.
However the nearest city may not be that near after all, in which
case the result is again surprising.
Address this by not using the nearest city name unconditionally, but
only if it appears in the station name.
https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2468
js/ui/dateMenu.js | 23 ++++++++++++++++-------
1 file changed, 16 insertions(+), 7 deletions(-)
---
diff --git a/js/ui/dateMenu.js b/js/ui/dateMenu.js
index a10c6fcf46..ca9611f2de 100644
--- a/js/ui/dateMenu.js
+++ b/js/ui/dateMenu.js
@@ -397,6 +397,20 @@ class WeatherSection extends St.Button {
layout.attach(label, 0, 0, 1, 1);
}
+ _findBestLocationName(loc) {
+ const locName = loc.get_name();
+
+ if (loc.get_level() === GWeather.LocationLevel.CITY ||
+ !loc.has_coords())
+ return locName;
+
+ const world = GWeather.Location.get_world();
+ const city = world.find_nearest_city(...loc.get_coords());
+ const cityName = city.get_name();
+
+ return locName.includes(cityName) ? cityName : locName;
+ }
+
_updateForecasts() {
this._forecastGrid.destroy_all_children();
@@ -405,13 +419,8 @@ class WeatherSection extends St.Button {
return;
}
- let info = this._weatherClient.info;
- let loc = info.get_location();
- if (loc.get_level() !== GWeather.LocationLevel.CITY && loc.has_coords()) {
- let world = GWeather.Location.get_world();
- loc = world.find_nearest_city(...loc.get_coords());
- }
- this._titleLocation.text = loc.get_name();
+ const { info } = this._weatherClient;
+ this._titleLocation.text = this._findBestLocationName(info.location);
if (this._weatherClient.loading) {
this._setStatusLabel(_("Loading…"));
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]