diff --git a/panels/display/cc-night-light-dialog.c b/panels/display/cc-night-light-dialog.c
index abb26f07f..7a3b86f92 100644
--- a/panels/display/cc-night-light-dialog.c
+++ b/panels/display/cc-night-light-dialog.c
@@ -39,9 +39,9 @@ struct _CcNightLightDialog {
GtkWidget *spinbutton_to_minutes;
GtkStack *stack_from;
GtkStack *stack_to;
- GtkWidget *switch_enable;
GtkWidget *togglebutton_automatic;
GtkWidget *togglebutton_manual;
+ GtkWidget *togglebutton_off;
GtkAdjustment *adjustment_from_hours;
GtkAdjustment *adjustment_from_minutes;
@@ -118,6 +118,7 @@ dialog_update_state (CcNightLightDialog *self)
gboolean enabled;
gdouble value = 0.f;
g_autoptr(GDateTime) dt = g_date_time_new_now_local ();
+ GtkToggleButton *toggle_button;
/* only show the infobar if we are disabled */
if (self->proxy_color != NULL)
@@ -134,12 +135,14 @@ dialog_update_state (CcNightLightDialog *self)
enabled = g_settings_get_boolean (self->settings_display, "night-light-enabled");
automatic = g_settings_get_boolean (self->settings_display, "night-light-schedule-automatic");
- gtk_widget_set_sensitive (self->togglebutton_automatic, enabled);
- gtk_widget_set_sensitive (self->togglebutton_manual, enabled);
-
self->ignore_value_changed = TRUE;
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self->togglebutton_automatic), automatic);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self->togglebutton_manual), !automatic);
+ if (!enabled)
+ toggle_button = GTK_TOGGLE_BUTTON (self->togglebutton_off);
+ else if (automatic)
+ toggle_button = GTK_TOGGLE_BUTTON (self->togglebutton_automatic);
+ else
+ toggle_button = GTK_TOGGLE_BUTTON (self->togglebutton_manual);
+ gtk_toggle_button_set_active (toggle_button, TRUE);
self->ignore_value_changed = FALSE;
gtk_widget_set_sensitive (self->box_manual, enabled && !automatic);
@@ -217,15 +220,23 @@ static void
dialog_mode_changed_cb (GtkToggleButton *togglebutton,
CcNightLightDialog *self)
{
- gboolean ret;
-
if (self->ignore_value_changed)
return;
- if (!gtk_toggle_button_get_active (togglebutton))
- return;
- ret = g_settings_get_boolean (self->settings_display, "night-light-schedule-automatic");
- g_settings_set_boolean (self->settings_display, "night-light-schedule-automatic", !ret);
+ if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->togglebutton_automatic)))
+ {
+ g_settings_set_boolean (self->settings_display, "night-light-enabled", TRUE);
+ g_settings_set_boolean (self->settings_display, "night-light-schedule-automatic", TRUE);
+ }
+ else if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->togglebutton_manual)))
+ {
+ g_settings_set_boolean (self->settings_display, "night-light-enabled", TRUE);
+ g_settings_set_boolean (self->settings_display, "night-light-schedule-automatic", FALSE);
+ }
+ if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (self->togglebutton_off)))
+ {
+ g_settings_set_boolean (self->settings_display, "night-light-enabled", FALSE);
+ }
}
static void
@@ -540,9 +551,9 @@ cc_night_light_dialog_class_init (CcNightLightDialogClass *klass)
gtk_widget_class_bind_template_child (widget_class, CcNightLightDialog, spinbutton_to_minutes);
gtk_widget_class_bind_template_child (widget_class, CcNightLightDialog, stack_from);
gtk_widget_class_bind_template_child (widget_class, CcNightLightDialog, stack_to);
- gtk_widget_class_bind_template_child (widget_class, CcNightLightDialog, switch_enable);
gtk_widget_class_bind_template_child (widget_class, CcNightLightDialog, togglebutton_automatic);
gtk_widget_class_bind_template_child (widget_class, CcNightLightDialog, togglebutton_manual);
+ gtk_widget_class_bind_template_child (widget_class, CcNightLightDialog, togglebutton_off);
gtk_widget_class_bind_template_callback (widget_class, dialog_am_pm_from_button_clicked_cb);
gtk_widget_class_bind_template_callback (widget_class, dialog_am_pm_to_button_clicked_cb);
@@ -569,18 +580,6 @@ cc_night_light_dialog_init (CcNightLightDialog *self)
g_signal_connect (self->settings_display, "changed", G_CALLBACK (dialog_settings_changed_cb), self);
- /* connect widgets */
- g_settings_bind (self->settings_display,
- "night-light-enabled",
- self->switch_enable,
- "active",
- G_SETTINGS_BIND_DEFAULT);
-
- g_settings_bind_writable (self->settings_display, "night-light-enabled",
- self->switch_enable, "sensitive",
- FALSE);
-
-
/* use custom CSS */
provider = gtk_css_provider_new ();
if (!gtk_css_provider_load_from_data (provider,
diff --git a/panels/display/cc-night-light-dialog.ui b/panels/display/cc-night-light-dialog.ui
index c61b3738b..c8fe485c9 100644
--- a/panels/display/cc-night-light-dialog.ui
+++ b/panels/display/cc-night-light-dialog.ui
@@ -118,23 +118,7 @@
False
True
22
- 60
-
-
-
- 0
- 0
-
-
+ 40
-
-
-
- 1
- 0
-
-