From 440a9eef740e04821393c383c23d3937ea3bc28e Mon Sep 17 00:00:00 2001 From: rbuj Date: Thu, 16 Dec 2021 23:39:00 +0100 Subject: clock: simplify temperature_unit_changed and speed_unit_changed --- applets/clock/clock.c | 45 +++++++++++++++++++++++---------------------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/applets/clock/clock.c b/applets/clock/clock.c index f806a387..5383ca92 100644 --- a/applets/clock/clock.c +++ b/applets/clock/clock.c @@ -2322,23 +2322,25 @@ clock_timezone_changed (SystemTimezone *systz, refresh_click_timeout_time_only (cd); } +#define unit_combo_box_set_active(x,y) (gtk_combo_box_set_active (GTK_COMBO_BOX (gtk_builder_get_object (cd->builder, (x))), (y))) + static void temperature_unit_changed (GSettings *settings, gchar *key, ClockData *cd) { - cd->temperature_unit = g_settings_get_enum (settings, key); - if (cd->temperature_unit > 0) - { - GtkWidget *widget; - int oldvalue; + TempUnit temperature_unit = g_settings_get_enum (settings, key); - widget = _clock_get_widget (cd, "temperature_combo"); - oldvalue = gtk_combo_box_get_active (GTK_COMBO_BOX (widget)) + 2; - if (((TempUnit) oldvalue) != cd->temperature_unit) - gtk_combo_box_set_active (GTK_COMBO_BOX (widget), - cd->temperature_unit - 2); - } + if (cd->temperature_unit == temperature_unit) + return; + + /* TEMP_UNIT_INVALID = 0 */ + if (temperature_unit == TEMP_UNIT_INVALID) + return; + + unit_combo_box_set_active ("temperature_combo", + ((int) temperature_unit) - 2); + cd->temperature_unit = temperature_unit; update_weather_locations (cd); } @@ -2347,19 +2349,18 @@ speed_unit_changed (GSettings *settings, gchar *key, ClockData *cd) { - cd->speed_unit = g_settings_get_enum (settings, key); - if (cd->speed_unit > 0) - { - GtkWidget *widget; - int oldvalue; + SpeedUnit speed_unit = g_settings_get_enum (settings, key); + + if (cd->speed_unit == speed_unit) + return; - widget = _clock_get_widget (cd, "wind_speed_combo"); - oldvalue = gtk_combo_box_get_active (GTK_COMBO_BOX (widget)) + 2; + /* SPEED_UNIT_INVALID = 0 */ + if (speed_unit == SPEED_UNIT_INVALID) + return; - if (((SpeedUnit) oldvalue) != cd->speed_unit) - gtk_combo_box_set_active (GTK_COMBO_BOX (widget), - cd->speed_unit - 2); - } + unit_combo_box_set_active ("wind_speed_combo", + ((int) speed_unit) - 2); + cd->speed_unit = speed_unit; update_weather_locations (cd); } -- cgit v1.2.1