diff options
author | Benjamin Berg <bberg@redhat.com> | 2019-03-20 14:59:36 +0100 |
---|---|---|
committer | Benjamin Berg <bberg@redhat.com> | 2019-03-20 17:58:29 +0100 |
commit | 98d20659b7f776863d0d3e76f08c2dce0584b90d (patch) | |
tree | a4614ac3b748f0b1ddc343e0ed75f6f2bcf7d24a | |
parent | 21bb6416be4f436fe10e84661f0ae40c2b31219d (diff) | |
download | gnome-control-center-98d20659b7f776863d0d3e76f08c2dce0584b90d.tar.gz |
display: Make rebuilding variable a counter
We need to also set rebuilding while updating some other UI elements.
Make it into a counter to allow for recursive setting.
Note that additional checks for rebuilding will be added in later
commits.
-rw-r--r-- | panels/display/cc-display-panel.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/panels/display/cc-display-panel.c b/panels/display/cc-display-panel.c index 7ea5ab01a..e8532ba51 100644 --- a/panels/display/cc-display-panel.c +++ b/panels/display/cc-display-panel.c @@ -63,7 +63,7 @@ struct _CcDisplayPanel CcDisplayConfig *current_config; CcDisplayMonitor *current_output; - gboolean rebuilding; + gint rebuilding_counter; CcDisplayArrangement *arrangement; CcDisplaySettings *settings; @@ -480,7 +480,7 @@ on_config_type_toggled_cb (CcDisplayPanel *panel, { CcDisplayConfigType type; - if (panel->rebuilding) + if (panel->rebuilding_counter > 0) return; if (!panel->current_config) @@ -554,7 +554,7 @@ on_primary_display_selected_index_changed_cb (CcDisplayPanel *panel) gint idx = hdy_combo_row_get_selected_index (panel->primary_display_row); g_autoptr(CcDisplayMonitor) output = NULL; - if (idx < 0 || panel->rebuilding) + if (idx < 0 || panel->rebuilding_counter > 0) return; output = g_list_model_get_item (G_LIST_MODEL (panel->primary_display_list), idx); @@ -633,6 +633,8 @@ set_current_output (CcDisplayPanel *panel, if (!changed && !force) return; + panel->rebuilding_counter++; + if (changed && cc_panel_get_selected_type (panel) == CC_DISPLAY_CONFIG_SINGLE) { if (output) @@ -684,6 +686,8 @@ set_current_output (CcDisplayPanel *panel, cc_display_settings_set_selected_output (panel->settings, panel->current_output); cc_display_arrangement_set_selected_output (panel->arrangement, panel->current_output); } + + panel->rebuilding_counter--; } static void @@ -692,7 +696,7 @@ rebuild_ui (CcDisplayPanel *panel) guint n_outputs, n_active_outputs, n_usable_outputs; GList *outputs, *l; - panel->rebuilding = TRUE; + panel->rebuilding_counter++; g_list_store_remove_all (panel->primary_display_list); gtk_list_store_clear (panel->output_selection_list); @@ -793,7 +797,7 @@ rebuild_ui (CcDisplayPanel *panel) gtk_stack_set_visible_child_name (panel->output_selection_stack, "multi-selection"); } - panel->rebuilding = FALSE; + panel->rebuilding_counter--; update_apply_button (panel); } |