SELECTION_NONE = 0,
SELECTION_SELECTED = 1 << 0,
SELECTION_PRELIGHT = 1 << 1,
- SELECTION_FOCUS = 1 << 2
+ SELECTION_FOCUS = 1 << 2,
+ SELECTION_CLUSTER_HEAD = 1 << 3,
+ SELECTION_CLUSTER_CHILD = 1 << 4
} SelectionType;
typedef struct _ImageLoader ImageLoader;
typedef struct _ImageWindow ImageWindow;
+typedef struct _FileCluster FileCluster;
+typedef struct _FileClusterList FileClusterList;
+
typedef struct _FileData FileData;
typedef struct _FileDataChangeInfo FileDataChangeInfo;
gboolean mouse_wheel_mode;
};
+// A FileCluster is a GList with HashTable access to each node (to perform contains() checks quickly).
+struct _FileCluster
+{
+ GList *head;
+ GList *items;
+ gboolean show_children;
+};
+
+struct _FileClusterList
+{
+ // A map from any clustered FileData to the FileCluster object that describes the cluster.
+ GHashTable *clusters;
+};
+
#define FILEDATA_MARKS_SIZE 6
struct _FileDataChangeInfo {
FileData *dir_fd;
GList *list;
+ FileClusterList *cluster_list;
SortType sort_method;
gboolean sort_ascend;