Skip to content

Commit 8ff42b6

Browse files
committed
nemo-list-view.c: When column expanders are disabled, don't check
subdir counts or set up tracking for children. We were disabling the expanders in the widget, but not suppressing the extra work involved in setting up or determining if a row 'would' have one if they were enabled.
1 parent 9b1539c commit 8ff42b6

3 files changed

Lines changed: 28 additions & 5 deletions

File tree

src/nemo-list-model.c

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ struct NemoListModelDetails {
8585

8686
GList *highlight_files;
8787
gboolean temp_unsorted;
88+
gboolean expansion_enabled;
8889
};
8990

9091
typedef struct {
@@ -1071,7 +1072,7 @@ nemo_list_model_add_file (NemoListModel *model, NemoFile *file,
10711072
gtk_tree_model_row_inserted (GTK_TREE_MODEL (model), path, &iter);
10721073
}
10731074

1074-
if (nemo_file_is_directory (file)) {
1075+
if (nemo_file_is_directory (file) && model->details->expansion_enabled) {
10751076
guint count;
10761077
gboolean got_count, unreadable;
10771078

@@ -1201,7 +1202,7 @@ nemo_list_model_file_changed (NemoListModel *model, NemoFile *file,
12011202

12021203
gtk_tree_model_row_changed (GTK_TREE_MODEL (model), path, &iter);
12031204

1204-
if (nemo_file_is_directory (file)) {
1205+
if (nemo_file_is_directory (file) && model->details->expansion_enabled) {
12051206
if (update_dummy_row (model, file, g_sequence_get (ptr))) {
12061207
gtk_tree_model_row_has_child_toggled (GTK_TREE_MODEL (model),
12071208
path, &iter);
@@ -1892,3 +1893,9 @@ nemo_list_model_set_view_directory (NemoListModel *model, NemoDirectory *dir)
18921893
model->details->view_dir = dir;
18931894
}
18941895

1896+
void
1897+
nemo_list_model_set_expansion_enabled (NemoListModel *model, gboolean enabled)
1898+
{
1899+
model->details->expansion_enabled = enabled;
1900+
}
1901+

src/nemo-list-model.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,4 +140,5 @@ void nemo_list_model_set_temporarily_disable_sort (NemoListModel *m
140140
gboolean nemo_list_model_get_temporarily_disable_sort (NemoListModel *model);
141141
void nemo_list_model_set_expanding (NemoListModel *model, NemoDirectory *directory);
142142
void nemo_list_model_set_view_directory (NemoListModel *model, NemoDirectory *dir);
143+
void nemo_list_model_set_expansion_enabled (NemoListModel *model, gboolean enabled);
143144
#endif /* NEMO_LIST_MODEL_H */

src/nemo-list-view.c

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
#include "nemo-view-dnd.h"
3535
#include "nemo-view-factory.h"
3636
#include "nemo-window.h"
37+
#include "nemo-window-slot.h"
3738

3839
#include <string.h>
3940
#include <eel/eel-vfs-extensions.h>
@@ -283,13 +284,23 @@ tooltip_prefs_changed_callback (NemoListView *view)
283284
static void
284285
expanders_enabled_changed_cb (NemoListView *view)
285286
{
287+
gboolean enabled;
288+
NemoWindowSlot *slot;
289+
286290
g_return_if_fail (NEMO_IS_LIST_VIEW (view));
287291
g_return_if_fail (GTK_IS_TREE_VIEW (view->details->tree_view) && view->details->tree_view != NULL);
288292

293+
enabled = g_settings_get_boolean (nemo_list_view_preferences,
294+
NEMO_PREFERENCES_LIST_VIEW_ENABLE_EXPANSION);
295+
289296
gtk_tree_view_collapse_all (view->details->tree_view);
290-
gtk_tree_view_set_show_expanders (view->details->tree_view,
291-
g_settings_get_boolean (nemo_list_view_preferences,
292-
NEMO_PREFERENCES_LIST_VIEW_ENABLE_EXPANSION));
297+
gtk_tree_view_set_show_expanders (view->details->tree_view, enabled);
298+
nemo_list_model_set_expansion_enabled (view->details->model, enabled);
299+
300+
slot = nemo_view_get_nemo_window_slot (NEMO_VIEW (view));
301+
if (slot != NULL) {
302+
nemo_window_slot_queue_reload (slot, FALSE);
303+
}
293304
}
294305

295306
static void
@@ -2599,6 +2610,10 @@ create_and_set_up_tree_view (NemoListView *view)
25992610
g_signal_connect (view->details->tree_view, "size-allocate", G_CALLBACK (on_size_allocation_changed), view);
26002611

26012612
view->details->model = g_object_new (NEMO_TYPE_LIST_MODEL, NULL);
2613+
nemo_list_model_set_expansion_enabled (view->details->model,
2614+
g_settings_get_boolean (nemo_list_view_preferences,
2615+
NEMO_PREFERENCES_LIST_VIEW_ENABLE_EXPANSION));
2616+
26022617
gtk_tree_view_set_model (view->details->tree_view, GTK_TREE_MODEL (view->details->model));
26032618
/* Need the model for the dnd drop icon "accept" change */
26042619
nemo_list_model_set_drag_view (NEMO_LIST_MODEL (view->details->model),

0 commit comments

Comments
 (0)