display: Fix gaps when numbering unusable displays
This commit is contained in:
parent
b59b6beeb5
commit
4fe26944d8
3 changed files with 32 additions and 11 deletions
|
@ -465,7 +465,6 @@ cc_display_config_constructed (GObject *object)
|
|||
CcDisplayConfigPrivate *priv = cc_display_config_get_instance_private (self);
|
||||
GList *monitors = cc_display_config_get_monitors (self);
|
||||
GList *item;
|
||||
gint ui_number = 1;
|
||||
|
||||
for (item = monitors; item != NULL; item = item->next)
|
||||
{
|
||||
|
@ -477,16 +476,7 @@ cc_display_config_constructed (GObject *object)
|
|||
priv->ui_sorted_monitors = g_list_append (priv->ui_sorted_monitors, monitor);
|
||||
}
|
||||
|
||||
for (item = priv->ui_sorted_monitors; item != NULL; item = item->next)
|
||||
{
|
||||
CcDisplayMonitor *monitor = item->data;
|
||||
char *ui_name;
|
||||
ui_name = make_output_ui_name (monitor);
|
||||
|
||||
cc_display_monitor_set_ui_info (monitor, ui_number, ui_name);
|
||||
|
||||
ui_number += 1;
|
||||
}
|
||||
cc_display_config_update_ui_numbers_names(self);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -663,3 +653,30 @@ cc_display_config_get_panel_orientation_managed (CcDisplayConfig *self)
|
|||
{
|
||||
return CC_DISPLAY_CONFIG_GET_CLASS (self)->get_panel_orientation_managed (self);
|
||||
}
|
||||
|
||||
void
|
||||
cc_display_config_update_ui_numbers_names (CcDisplayConfig *self)
|
||||
{
|
||||
CcDisplayConfigPrivate *priv = cc_display_config_get_instance_private (self);
|
||||
GList *item;
|
||||
gint ui_number = 1;
|
||||
for (item = priv->ui_sorted_monitors; item != NULL; item = item->next)
|
||||
{
|
||||
CcDisplayMonitor *monitor = item->data;
|
||||
char *ui_name;
|
||||
gint current_ui_number = 0;
|
||||
|
||||
ui_name = make_output_ui_name (monitor);
|
||||
|
||||
/* Prevents gaps in monitor numbering. Monitors
|
||||
* with number 0 will not be visible in the UI.
|
||||
*/
|
||||
if (cc_display_monitor_is_usable (monitor))
|
||||
{
|
||||
current_ui_number = ui_number;
|
||||
ui_number += 1;
|
||||
}
|
||||
|
||||
cc_display_monitor_set_ui_info (monitor, current_ui_number, ui_name);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -202,6 +202,7 @@ gboolean cc_display_config_is_scaled_mode_valid (CcDisplayConfig
|
|||
double scale);
|
||||
gboolean cc_display_config_get_panel_orientation_managed
|
||||
(CcDisplayConfig *self);
|
||||
void cc_display_config_update_ui_numbers_names (CcDisplayConfig *self);
|
||||
|
||||
const char* cc_display_monitor_get_display_name (CcDisplayMonitor *monitor);
|
||||
gboolean cc_display_monitor_is_active (CcDisplayMonitor *monitor);
|
||||
|
|
|
@ -878,6 +878,9 @@ reset_current_config (CcDisplayPanel *panel)
|
|||
if (cc_display_monitor_is_builtin (output) && panel->lid_is_closed)
|
||||
cc_display_monitor_set_usable (output, FALSE);
|
||||
}
|
||||
|
||||
/* Recalculate UI numbers after the monitor usability is determined to skip numbering gaps. */
|
||||
cc_display_config_update_ui_numbers_names(panel->current_config);
|
||||
}
|
||||
|
||||
cc_display_arrangement_set_config (panel->arrangement, panel->current_config);
|
||||
|
|
Loading…
Add table
Reference in a new issue