Fix #314: Remote commands for thumbnail maintenance
[geeqie.git] / src / view_dir.c
index 1cdef93..fe0dd28 100644 (file)
@@ -1,12 +1,21 @@
 /*
- * Geeqie
- * Copyright (C) 2008 - 2012 The Geeqie Team
+ * Copyright (C) 2008 - 2016 The Geeqie Team
  *
  * Author: Laurent Monin
  *
- * This software is released under the GNU General Public License (GNU GPL).
- * Please read the included file COPYING for more information.
- * This software comes with no warranty of any kind, use at your own risk!
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 #include "main.h"
@@ -31,7 +40,7 @@
 static PixmapFolders *folder_icons_new(GtkWidget *widget)
 {
        PixmapFolders *pf = g_new0(PixmapFolders, 1);
-       
+
 #if 1
        GtkIconSize size = GTK_ICON_SIZE_MENU;
 
@@ -268,7 +277,7 @@ static gboolean vd_rename_cb(TreeEditData *td, const gchar *old, const gchar *ne
        g_free(base);
 
        file_util_rename_dir(fd, new_path, vd->view, vd_rename_finished_cb, vd);
-       
+
        g_free(new_path);
 
        return FALSE;
@@ -366,9 +375,9 @@ static void vd_drop_menu_filter_cb(GtkWidget *widget, gpointer data)
        const gchar *path;
        GList *list;
        const gchar *key;
-       
+
        if (!vd->drop_fd) return;
-       
+
        key = g_object_get_data(G_OBJECT(widget), "filter_key");
 
        path = vd->drop_fd->path;
@@ -404,13 +413,13 @@ GtkWidget *vd_drop_menu(ViewDir *vd, gint active)
                const EditorDescription *editor = work->data;
                gchar *key;
                work = work->next;
-               
+
                if (!editor_is_filter(editor->key)) continue;
                key = g_strdup(editor->key);
                item = menu_item_add_sensitive(menu, editor->name, active, G_CALLBACK(vd_drop_menu_filter_cb), vd);
                g_object_set_data_full(G_OBJECT(item), "filter_key", key, vd_drop_menu_edit_item_free);
                }
-       
+
        g_list_free(editors_list);
 
        menu_item_add_divider(menu);
@@ -487,7 +496,7 @@ static void vd_pop_menu_dupe(ViewDir *vd, gint recursive)
                list = filelist_filter(list, FALSE);
                }
 
-       dw = dupe_window_new(DUPE_MATCH_NAME);
+       dw = dupe_window_new();
        dupe_window_add_files(dw, list, recursive);
 
        filelist_free(list);
@@ -856,6 +865,10 @@ void vd_dnd_drop_scroll_cancel(ViewDir *vd)
 static gboolean vd_auto_scroll_idle_cb(gpointer data)
 {
        ViewDir *vd = data;
+#if GTK_CHECK_VERSION(3,0,0)
+       GdkDeviceManager *device_manager;
+       GdkDevice *device;
+#endif
 
        if (vd->drop_fd)
                {
@@ -864,7 +877,13 @@ static gboolean vd_auto_scroll_idle_cb(gpointer data)
                gint w, h;
 
                window = gtk_widget_get_window(vd->view);
+#if GTK_CHECK_VERSION(3,0,0)
+               device_manager = gdk_display_get_device_manager(gdk_window_get_display(window));
+               device = gdk_device_manager_get_client_pointer(device_manager);
+               gdk_window_get_device_position(window, device, &x, &y, NULL);
+#else
                gdk_window_get_pointer(window, &x, &y, NULL);
+#endif
                w = gdk_window_get_width(window);
                h = gdk_window_get_height(window);
                if (x >= 0 && x < w && y >= 0 && y < h)
@@ -1016,6 +1035,9 @@ gboolean vd_release_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data)
        GtkTreePath *tpath;
        FileData *fd = NULL;
 
+       if (vd->type == DIRVIEW_LIST && !options->view_dir_list_single_click_enter)
+               return FALSE;
+
        if (!vd->click_fd) return FALSE;
        vd_color_set(vd, vd->click_fd, FALSE);
 
@@ -1102,7 +1124,7 @@ static void vd_notify_cb(FileData *fd, NotifyType type, gpointer data)
                                g_free(source_base);
                                }
                        }
-               
+
                if (refresh) vd_refresh(vd);
                }