#include "view-dir-tree.h"
#include "filedata.h"
+#include "layout.h"
#include "ui-fileops.h"
#include "ui-tree-edit.h"
#include "view-dir.h"
-#define VDTREE(_vd_) ((ViewDirInfoTree *)(_vd_->info))
+struct ViewDirInfoTree
+{
+ guint drop_expand_id; /**< event source id */
+ gint busy_ref;
+};
+
+#define VDTREE(_vd_) ((ViewDirInfoTree *)((_vd_)->info))
struct PathData
static void set_cursor(GtkWidget *widget, GdkCursorType cursor_type)
{
GdkCursor *cursor = nullptr;
+ GdkDisplay *display;
if (!widget || !gtk_widget_get_window(widget)) return;
- if (cursor_type > -1) cursor = gdk_cursor_new(cursor_type);
+ display = gdk_display_get_default();
+
+ if (cursor_type > -1) cursor = gdk_cursor_new_for_display(display, cursor_type);
gdk_window_set_cursor(gtk_widget_get_window(widget), cursor);
if (cursor) g_object_unref(G_OBJECT(cursor));
gdk_flush();
}
}
-static gint vdtree_sort_cb(GtkTreeModel *store, GtkTreeIter *a, GtkTreeIter *b, gpointer)
+static gint vdtree_sort_cb(GtkTreeModel *store, GtkTreeIter *a, GtkTreeIter *b, gpointer data)
{
NodeData *nda;
NodeData *ndb;
+ auto vd = static_cast<ViewDir *>(data);
gtk_tree_model_get(store, a, DIR_COLUMN_POINTER, &nda, -1);
gtk_tree_model_get(store, b, DIR_COLUMN_POINTER, &ndb, -1);
if (!nda->fd) return 1;
if (!ndb->fd) return -1;
- if (options->file_sort.case_sensitive)
+ if (vd->layout->options.dir_view_list_sort.method == SORT_NUMBER)
+ {
+ if (vd->layout->options.dir_view_list_sort.case_sensitive == TRUE)
+ {
+ return strcmp(nda->fd->collate_key_name_natural, ndb->fd->collate_key_name_natural);
+ }
+
+ return strcmp(nda->fd->collate_key_name_nocase_natural, ndb->fd->collate_key_name_nocase_natural);
+ }
+
+ if (vd->layout->options.dir_view_list_sort.method == SORT_TIME)
+ {
+ if (nda->fd->date < ndb->fd->date) return -1;
+ if (nda->fd->date > ndb->fd->date) return 1;
+ return 0;
+ }
+
+ if (vd->layout->options.dir_view_list_sort.case_sensitive == TRUE)
+ {
return strcmp(nda->fd->collate_key_name, ndb->fd->collate_key_name);
- else
- return strcmp(nda->fd->collate_key_name_nocase, ndb->fd->collate_key_name_nocase);
+ }
+
+ return strcmp(nda->fd->collate_key_name_nocase, ndb->fd->collate_key_name_nocase);
}
/*