Commit f45dcff8 authored by Benjamin Berg's avatar Benjamin Berg

display: Ensure at least one display is enabled

When the user has more than two monitors, then they can disable each
monitor separately. If the user creates an invalid configuration because
they disabled the last monitor, then enable a different one immediately.
parent defbcebf
......@@ -493,8 +493,32 @@ on_output_enabled_active_changed_cb (CcDisplayPanel *panel)
if (cc_display_monitor_is_active (panel->current_output) == active)
return;
/* Changing the active state requires a UI rebuild. */
cc_display_monitor_set_active (panel->current_output, active);
/* Prevent the invalid configuration of disabling the last monitor
* by switching on a different one. */
if (config_get_current_type (panel) == CC_DISPLAY_CONFIG_INVALID_NONE)
{
GList *outputs, *l;
outputs = cc_display_config_get_ui_sorted_monitors (panel->current_config);
for (l = outputs; l; l = l->next)
{
CcDisplayMonitor *output = CC_DISPLAY_MONITOR (l->data);
if (output == panel->current_output)
continue;
if (!cc_display_monitor_is_usable (output))
continue;
cc_display_monitor_set_active (output, TRUE);
cc_display_monitor_set_primary (output, TRUE);
break;
}
}
/* Changing the active state requires a UI rebuild. */
rebuild_ui (panel);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment