Fix clang-tidy: readability-non-const-parameter
[geeqie.git] / src / view-dir-tree.cc
index 5c81731..d30db2b 100644 (file)
 #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
@@ -49,10 +56,13 @@ static void vdtree_row_expanded(GtkTreeView *treeview, GtkTreeIter *iter, GtkTre
 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();
@@ -968,10 +978,11 @@ static void vdtree_row_collapsed(GtkTreeView *treeview, GtkTreeIter *iter, GtkTr
                }
 }
 
-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);
@@ -980,10 +991,29 @@ static gint vdtree_sort_cb(GtkTreeModel *store, GtkTreeIter *a, GtkTreeIter *b,
        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);
 }
 
 /*