Drop unused variables and code.
[geeqie.git] / src / pan-view.c
index e306731..ce741f5 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Geeqie
  * (C) 2006 John Ellis
- * Copyright (C) 2008 The Geeqie Team
+ * Copyright (C) 2008 - 2012 The Geeqie Team
  *
  * Author: John Ellis
  *
 #include "dnd.h"
 #include "editors.h"
 #include "exif.h"
+#include "metadata.h"
 #include "fullscreen.h"
 #include "history_list.h"
 #include "img-view.h"
-#include "info.h"
 #include "menu.h"
 #include "misc.h"
 #include "pan-types.h"
@@ -60,9 +60,9 @@ static GList *pan_window_list = NULL;
 
 static void pan_layout_update_idle(PanWindow *pw);
 
-static void pan_fullscreen_toggle(PanWindow *pw, gint force_off);
+static void pan_fullscreen_toggle(PanWindow *pw, gboolean force_off);
 
-static void pan_search_toggle_visible(PanWindow *pw, gint enable);
+static void pan_search_toggle_visible(PanWindow *pw, gboolean enable);
 static void pan_search_activate(PanWindow *pw);
 
 static void pan_window_close(PanWindow *pw);
@@ -78,7 +78,7 @@ static void pan_window_dnd_init(PanWindow *pw);
  *-----------------------------------------------------------------------------
  */
 
-static gint pan_queue_step(PanWindow *pw);
+static gboolean pan_queue_step(PanWindow *pw);
 
 
 static void pan_queue_thumb_done_cb(ThumbLoader *tl, gpointer data)
@@ -176,7 +176,7 @@ static void pan_queue_image_area_cb(ImageLoader *il, guint x, guint y,
 }
 #endif
 
-static gint pan_queue_step(PanWindow *pw)
+static gboolean pan_queue_step(PanWindow *pw)
 {
        PanItem *pi;
 
@@ -210,8 +210,8 @@ static gint pan_queue_step(PanWindow *pw)
 #if 0
                image_loader_set_area_ready_func(pw->il, pan_queue_image_area_cb, pw);
 #endif
-               g_signal_connect (G_OBJECT(pw->il), "error", (GCallback)pan_queue_image_done_cb, pw);
-               g_signal_connect (G_OBJECT(pw->il), "done", (GCallback)pan_queue_image_done_cb, pw);
+               g_signal_connect(G_OBJECT(pw->il), "error", (GCallback)pan_queue_image_done_cb, pw);
+               g_signal_connect(G_OBJECT(pw->il), "done", (GCallback)pan_queue_image_done_cb, pw);
 
                if (image_loader_start(pw->il)) return FALSE;
 
@@ -269,8 +269,8 @@ static void pan_queue_add(PanWindow *pw, PanItem *pi)
  *-----------------------------------------------------------------------------
  */
 
-static gint pan_window_request_tile_cb(PixbufRenderer *pr, gint x, gint y,
-                                      gint width, gint height, GdkPixbuf *pixbuf, gpointer data)
+static gboolean pan_window_request_tile_cb(PixbufRenderer *pr, gint x, gint y,
+                                          gint width, gint height, GdkPixbuf *pixbuf, gpointer data)
 {
        PanWindow *pw = data;
        GList *list;
@@ -313,7 +313,7 @@ static gint pan_window_request_tile_cb(PixbufRenderer *pr, gint x, gint y,
        while (work)
                {
                PanItem *pi;
-               gint queue = FALSE;
+               gboolean queue = FALSE;
 
                pi = work->data;
                work = work->next;
@@ -531,7 +531,7 @@ static gint pan_cache_sort_file_cb(gpointer a, gpointer b)
        PanCacheData *pcb = b;
        return filelist_sort_compare_filedata(pca->fd, pcb->fd);
 }
-GList *pan_cache_sort(GList *list, SortType method, gint ascend)
+GList *pan_cache_sort(GList *list, SortType method, gboolean ascend)
 {
        return filelist_sort_full(list, method, ascend, (GCompareFunc) pan_cache_sort_file_cb);
 }
@@ -602,7 +602,7 @@ static void pan_cache_step_done_cb(CacheLoader *cl, gint error, gpointer data)
        pan_layout_update_idle(pw);
 }
 
-static gint pan_cache_step(PanWindow *pw)
+static gboolean pan_cache_step(PanWindow *pw)
 {
        FileData *fd;
        PanCacheData *pc;
@@ -638,7 +638,7 @@ static gint pan_cache_step(PanWindow *pw)
                        mode_t mode = 0755;
 
                        base = cache_get_location(CACHE_TYPE_SIM, fd->path, FALSE, &mode);
-                       if (cache_ensure_dir_exists(base, mode))
+                       if (recursive_mkdir_if_not_exists(base, mode))
                                {
                                g_free(cd->path);
                                cd->path = cache_get_location(CACHE_TYPE_SIM, fd->path, TRUE, NULL);
@@ -748,9 +748,6 @@ static void pan_grid_build(PanWindow *pw, gint width, gint height, gint grid_siz
        gint col, row;
        gint cw, ch;
        gint l;
-       gdouble total;
-       gdouble s;
-       gdouble aw, ah;
        gint i, j;
 
        pan_grid_clear(pw);
@@ -759,12 +756,6 @@ static void pan_grid_build(PanWindow *pw, gint width, gint height, gint grid_siz
 
        if (l < 1) return;
 
-       total = (gdouble)width * (gdouble)height / (gdouble)l;
-       s = sqrt(total);
-
-       aw = (gdouble)width / s;
-       ah = (gdouble)height / s;
-
        col = (gint)(sqrt((gdouble)l / grid_size) * width / height + 0.999);
        col = CLAMP(col, 1, l / grid_size + 1);
        row = (gint)((gdouble)l / grid_size / col);
@@ -791,7 +782,6 @@ static void pan_grid_build(PanWindow *pw, gint width, gint height, gint grid_siz
                        pg->y = j * ch / 2;
                        pg->w = cw;
                        pg->h = ch;
-                       pg->list = NULL;
 
                        pw->list_grid = g_list_prepend(pw->list_grid, pg);
 
@@ -1108,7 +1098,7 @@ static gint pan_layout_update_idle_cb(gpointer data)
 
                        if (pan_cache_step(pw)) return TRUE;
 
-                       pw->idle_id = -1;
+                       pw->idle_id = 0;
                        return FALSE;
                        }
                }
@@ -1143,13 +1133,13 @@ static gint pan_layout_update_idle_cb(gpointer data)
 
        pan_window_message(pw, NULL);
 
-       pw->idle_id = -1;
+       pw->idle_id = 0;
        return FALSE;
 }
 
 static void pan_layout_update_idle(PanWindow *pw)
 {
-       if (pw->idle_id == -1)
+       if (!pw->idle_id)
                {
                pw->idle_id = g_idle_add(pan_layout_update_idle_cb, pw);
                }
@@ -1194,17 +1184,18 @@ static void pan_window_menu_pos_cb(GtkMenu *menu, gint *x, gint *y, gboolean *pu
 {
        PanWindow *pw = data;
 
-       gdk_window_get_origin(pw->imd->pr->window, x, y);
+       gdk_window_get_origin(gtk_widget_get_window(pw->imd->pr), x, y);
        popup_menu_position_clamp(menu, x, y, 0);
 }
 
-static gint pan_window_key_press_cb(GtkWidget *widget, GdkEventKey *event, gpointer data)
+static gboolean pan_window_key_press_cb(GtkWidget *widget, GdkEventKey *event, gpointer data)
 {
        PanWindow *pw = data;
        PixbufRenderer *pr;
        FileData *fd;
-       gint stop_signal = FALSE;
+       gboolean stop_signal = FALSE;
        GtkWidget *menu;
+       GtkWidget *imd_widget;
        gint x = 0;
        gint y = 0;
        gint focused;
@@ -1212,38 +1203,39 @@ static gint pan_window_key_press_cb(GtkWidget *widget, GdkEventKey *event, gpoin
 
        pr = PIXBUF_RENDERER(pw->imd->pr);
        fd = pan_menu_click_fd(pw);
-
-       focused = (pw->fs || GTK_WIDGET_HAS_FOCUS(GTK_WIDGET(pw->imd->widget)));
-       on_entry = (GTK_WIDGET_HAS_FOCUS(pw->path_entry) ||
-                   GTK_WIDGET_HAS_FOCUS(pw->search_entry));
+       
+       imd_widget = gtk_container_get_focus_child(GTK_CONTAINER(pw->imd->widget));
+       focused = (pw->fs || (imd_widget && gtk_widget_has_focus(imd_widget)));
+       on_entry = (gtk_widget_has_focus(pw->path_entry) ||
+                   gtk_widget_has_focus(pw->search_entry));
 
        if (focused)
                {
                stop_signal = TRUE;
                switch (event->keyval)
                        {
-                       case GDK_Left: case GDK_KP_Left:
+                       case GDK_KEY_Left: case GDK_KEY_KP_Left:
                                x -= 1;
                                break;
-                       case GDK_Right: case GDK_KP_Right:
+                       case GDK_KEY_Right: case GDK_KEY_KP_Right:
                                x += 1;
                                break;
-                       case GDK_Up: case GDK_KP_Up:
+                       case GDK_KEY_Up: case GDK_KEY_KP_Up:
                                y -= 1;
                                break;
-                       case GDK_Down: case GDK_KP_Down:
+                       case GDK_KEY_Down: case GDK_KEY_KP_Down:
                                y += 1;
                                break;
-                       case GDK_Page_Up: case GDK_KP_Page_Up:
+                       case GDK_KEY_Page_Up: case GDK_KEY_KP_Page_Up:
                                pixbuf_renderer_scroll(pr, 0, 0 - pr->vis_height / 2);
                                break;
-                       case GDK_Page_Down: case GDK_KP_Page_Down:
+                       case GDK_KEY_Page_Down: case GDK_KEY_KP_Page_Down:
                                pixbuf_renderer_scroll(pr, 0, pr->vis_height / 2);
                                break;
-                       case GDK_Home: case GDK_KP_Home:
+                       case GDK_KEY_Home: case GDK_KEY_KP_Home:
                                pixbuf_renderer_scroll(pr, 0 - pr->vis_width / 2, 0);
                                break;
-                       case GDK_End: case GDK_KP_End:
+                       case GDK_KEY_End: case GDK_KEY_KP_End:
                                pixbuf_renderer_scroll(pr, pr->vis_width / 2, 0);
                                break;
                        default:
@@ -1267,40 +1259,19 @@ static gint pan_window_key_press_cb(GtkWidget *widget, GdkEventKey *event, gpoin
 
        if (event->state & GDK_CONTROL_MASK)
                {
-               gint n = -1;
-
                stop_signal = TRUE;
                switch (event->keyval)
                        {
                        case '1':
-                               n = 0;
-                               break;
                        case '2':
-                               n = 1;
-                               break;
                        case '3':
-                               n = 2;
-                               break;
                        case '4':
-                               n = 3;
-                               break;
                        case '5':
-                               n = 4;
-                               break;
                        case '6':
-                               n = 5;
-                               break;
                        case '7':
-                               n = 6;
-                               break;
                        case '8':
-                               n = 7;
-                               break;
                        case '9':
-                               n = 8;
-                               break;
                        case '0':
-                               n = 9;
                                break;
                        case 'C': case 'c':
                                if (fd) file_util_copy(fd, NULL, NULL, GTK_WIDGET(pr));
@@ -1314,9 +1285,6 @@ static gint pan_window_key_press_cb(GtkWidget *widget, GdkEventKey *event, gpoin
                        case 'D': case 'd':
                                if (fd) file_util_delete(fd, NULL, GTK_WIDGET(pr));
                                break;
-                       case 'P': case 'p':
-                               if (fd) info_window_new(fd, NULL, NULL);
-                               break;
                        case 'F': case 'f':
                                pan_search_toggle_visible(pw, TRUE);
                                break;
@@ -1330,7 +1298,7 @@ static gint pan_window_key_press_cb(GtkWidget *widget, GdkEventKey *event, gpoin
                                stop_signal = FALSE;
                                break;
                        }
-
+#if 0
                if (n != -1 && fd)
                        {
                        if (!editor_window_flag_set(n))
@@ -1339,13 +1307,14 @@ static gint pan_window_key_press_cb(GtkWidget *widget, GdkEventKey *event, gpoin
                                }
                        file_util_start_editor_from_file(n, fd, GTK_WIDGET(pr));
                        }
+#endif
                }
        else
                {
                stop_signal = TRUE;
                switch (event->keyval)
                        {
-                       case GDK_Escape:
+                       case GDK_KEY_Escape:
                                if (pw->fs)
                                        {
                                        pan_fullscreen_toggle(pw, TRUE);
@@ -1367,13 +1336,13 @@ static gint pan_window_key_press_cb(GtkWidget *widget, GdkEventKey *event, gpoin
                        stop_signal = TRUE;
                        switch (event->keyval)
                                {
-                               case '+': case '=': case GDK_KP_Add:
+                               case '+': case '=': case GDK_KEY_KP_Add:
                                        pixbuf_renderer_zoom_adjust(pr, ZOOM_INCREMENT);
                                        break;
-                               case '-': case GDK_KP_Subtract:
+                               case '-': case GDK_KEY_KP_Subtract:
                                        pixbuf_renderer_zoom_adjust(pr, -ZOOM_INCREMENT);
                                        break;
-                               case 'Z': case 'z': case GDK_KP_Divide: case '1':
+                               case 'Z': case 'z': case GDK_KEY_KP_Divide: case '1':
                                        pixbuf_renderer_zoom_set(pr, 1.0);
                                        break;
                                case '2':
@@ -1396,7 +1365,7 @@ static gint pan_window_key_press_cb(GtkWidget *widget, GdkEventKey *event, gpoin
                                        break;
                                case 'F': case 'f':
                                case 'V': case 'v':
-                               case GDK_F11:
+                               case GDK_KEY_F11:
                                        pan_fullscreen_toggle(pw, FALSE);
                                        break;
                                case 'I': case 'i':
@@ -1404,10 +1373,10 @@ static gint pan_window_key_press_cb(GtkWidget *widget, GdkEventKey *event, gpoin
                                        pan_overlay_toggle(pw);
 #endif
                                        break;
-                               case GDK_Delete: case GDK_KP_Delete:
+                               case GDK_KEY_Delete: case GDK_KEY_KP_Delete:
                                        break;
-                               case GDK_Menu:
-                               case GDK_F10:
+                               case GDK_KEY_Menu:
+                               case GDK_KEY_F10:
                                        menu = pan_popup_menu(pw);
                                        gtk_menu_popup(GTK_MENU(menu), NULL, NULL,
                                                       pan_window_menu_pos_cb, pw, 0, GDK_CURRENT_TIME);
@@ -1433,37 +1402,38 @@ static gint pan_window_key_press_cb(GtkWidget *widget, GdkEventKey *event, gpoin
 
 static void pan_info_add_exif(PanTextAlignment *ta, FileData *fd)
 {
-       ExifData *exif;
-       GList *work;
-       gint i;
 
        if (!fd) return;
-       exif = exif_read_fd(fd);
-       if (!exif) return;
 
        pan_text_alignment_add(ta, NULL, NULL);
+#if 0
+       {
+       GList *work;
+       gint i;
+
 
        for (i = 0; ExifUIList[i].key; i++)
                {
                gchar *label;
+               gchar *desc;
                gchar *text;
-               gchar *utf8_text;
 
                if (ExifUIList[i].current == EXIF_UI_OFF) continue;
 
-               text = exif_get_data_as_text(exif, ExifUIList[i].key);
+               text = metadata_read_string(fd, ExifUIList[i].key, METADATA_FORMATTED);
+               
                if (ExifUIList[i].current == EXIF_UI_IFSET && (!text || !*text))
                        {
                        g_free(text);
                        continue;
                        }
                
-               label = g_strdup_printf("%s:", exif_get_description_by_key(ExifUIList[i].key));
-               utf8_text = utf8_validate_or_convert(text);
-               g_free(text);
-               pan_text_alignment_add(ta, label, utf8_text);
+               desc = exif_get_description_by_key(ExifUIList[i].key);
+               label = g_strdup_printf("%s:", desc);
+               g_free(desc);
+               pan_text_alignment_add(ta, label, text);
                g_free(label);
-               g_free(utf8_text);
+               g_free(text);
                }
 
        work = g_list_last(history_list_get_by_key("exif_extras"));
@@ -1476,22 +1446,20 @@ static void pan_info_add_exif(PanTextAlignment *ta, FileData *fd)
                name = work->data;
                work = work->prev;
 
-               text = exif_get_data_as_text(exif, name);
+               text =  metadata_read_string(fd, name, METADATA_FORMATTED);
                if (text)
                        {
                        gchar *label = g_strdup_printf("%s:", name);
-                       gchar *utf8_text = utf8_validate_or_convert(text);
-
-                       g_free(text);
-                       pan_text_alignment_add(ta, label, utf8_text);
+                       pan_text_alignment_add(ta, label, text);
                        g_free(label);
-                       g_free(utf8_text);
+                       g_free(text);
                        }
                }
-
-       exif_free_fd(fd, exif);
+       }
+#endif
 }
 
+
 static void pan_info_update(PanWindow *pw, PanItem *pi)
 {
        PanTextAlignment *ta;
@@ -1602,7 +1570,7 @@ static void pan_info_update(PanWindow *pw, PanItem *pi)
                                                PAN_POPUP_BORDER_COLOR, PAN_POPUP_ALPHA);
                        pan_item_set_key(pbox, "info");
 
-                       p = pan_item_image_new(pw, file_data_new_simple(pi->fd->path),
+                       p = pan_item_image_new(pw, file_data_new_group(pi->fd->path),
                                               pbox->x + PREF_PAD_BORDER, pbox->y + PREF_PAD_BORDER, iw, ih);
                        pan_item_set_key(p, "info");
                        pan_item_size_by_item(pbox, p, PREF_PAD_BORDER);
@@ -1666,7 +1634,7 @@ static gint pan_search_by_path(PanWindow *pw, const gchar *path)
        return TRUE;
 }
 
-static gint pan_search_by_partial(PanWindow *pw, const gchar *text)
+static gboolean pan_search_by_partial(PanWindow *pw, const gchar *text)
 {
        PanItem *pi;
        GList *list;
@@ -1714,7 +1682,7 @@ static gint pan_search_by_partial(PanWindow *pw, const gchar *text)
        return TRUE;
 }
 
-static gint valid_date_separator(gchar c)
+static gboolean valid_date_separator(gchar c)
 {
        return (c == '/' || c == '-' || c == ' ' || c == '.' || c == ',');
 }
@@ -1756,7 +1724,7 @@ static GList *pan_search_by_date_val(PanWindow *pw, PanItemType type,
        return g_list_reverse(list);
 }
 
-static gint pan_search_by_date(PanWindow *pw, const gchar *text)
+static gboolean pan_search_by_date(PanWindow *pw, const gchar *text)
 {
        PanItem *pi = NULL;
        GList *list = NULL;
@@ -1969,9 +1937,9 @@ static void pan_search_activate(PanWindow *pw)
 static void pan_search_toggle_cb(GtkWidget *button, gpointer data)
 {
        PanWindow *pw = data;
-       gint visible;
+       gboolean visible;
 
-       visible = GTK_WIDGET_VISIBLE(pw->search_box);
+       visible = gtk_widget_get_visible(pw->search_box);
        if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)) == visible) return;
 
        if (visible)
@@ -1987,13 +1955,13 @@ static void pan_search_toggle_cb(GtkWidget *button, gpointer data)
                }
 }
 
-static void pan_search_toggle_visible(PanWindow *pw, gint enable)
+static void pan_search_toggle_visible(PanWindow *pw, gboolean enable)
 {
        if (pw->fs) return;
 
        if (enable)
                {
-               if (GTK_WIDGET_VISIBLE(pw->search_box))
+               if (gtk_widget_get_visible(pw->search_box))
                        {
                        gtk_widget_grab_focus(pw->search_entry);
                        }
@@ -2004,9 +1972,9 @@ static void pan_search_toggle_visible(PanWindow *pw, gint enable)
                }
        else
                {
-               if (GTK_WIDGET_VISIBLE(pw->search_entry))
+               if (gtk_widget_get_visible(pw->search_entry))
                        {
-                       if (GTK_WIDGET_HAS_FOCUS(pw->search_entry))
+                       if (gtk_widget_has_focus(pw->search_entry))
                                {
                                gtk_widget_grab_focus(GTK_WIDGET(pw->imd->widget));
                                }
@@ -2139,7 +2107,7 @@ static void pan_fullscreen_stop_func(FullScreenData *fs, gpointer data)
        pw->imd = pw->imd_normal;
 }
 
-static void pan_fullscreen_toggle(PanWindow *pw, gint force_off)
+static void pan_fullscreen_toggle(PanWindow *pw, gboolean force_off)
 {
        if (force_off && !pw->fs) return;
 
@@ -2181,12 +2149,12 @@ static void pan_window_image_scroll_notify_cb(PixbufRenderer *pr, gpointer data)
        pixbuf_renderer_get_image_size(pr, &width, &height);
 
        adj = gtk_range_get_adjustment(GTK_RANGE(pw->scrollbar_h));
-       adj->page_size = (gdouble)rect.width;
-       adj->page_increment = adj->page_size / 2.0;
-       adj->step_increment = 48.0 / pr->scale;
-       adj->lower = 0.0;
-       adj->upper = MAX((gdouble)width, 1.0);
-       adj->value = (gdouble)rect.x;
+       gtk_adjustment_set_page_size(adj, rect.width);
+       gtk_adjustment_set_page_increment(adj, gtk_adjustment_get_page_size(adj) / 2.0);
+       gtk_adjustment_set_step_increment(adj, 48.0 / pr->scale);
+       gtk_adjustment_set_lower(adj, 0.0);
+       gtk_adjustment_set_upper(adj, MAX((gdouble)width, 1.0));
+       gtk_adjustment_set_value(adj, (gdouble)rect.x);
 
        pref_signal_block_data(pw->scrollbar_h, pw);
        gtk_adjustment_changed(adj);
@@ -2194,12 +2162,12 @@ static void pan_window_image_scroll_notify_cb(PixbufRenderer *pr, gpointer data)
        pref_signal_unblock_data(pw->scrollbar_h, pw);
 
        adj = gtk_range_get_adjustment(GTK_RANGE(pw->scrollbar_v));
-       adj->page_size = (gdouble)rect.height;
-       adj->page_increment = adj->page_size / 2.0;
-       adj->step_increment = 48.0 / pr->scale;
-       adj->lower = 0.0;
-       adj->upper = MAX((gdouble)height, 1.0);
-       adj->value = (gdouble)rect.y;
+       gtk_adjustment_set_page_size(adj, rect.height);
+       gtk_adjustment_set_page_increment(adj, gtk_adjustment_get_page_size(adj) / 2.0);
+       gtk_adjustment_set_step_increment(adj, 48.0 / pr->scale);
+       gtk_adjustment_set_lower(adj, 0.0);
+       gtk_adjustment_set_upper(adj, MAX((gdouble)height, 1.0));
+       gtk_adjustment_set_value(adj, (gdouble)rect.y);
 
        pref_signal_block_data(pw->scrollbar_v, pw);
        gtk_adjustment_changed(adj);
@@ -2279,7 +2247,7 @@ static void pan_window_entry_activate_cb(const gchar *new_text, gpointer data)
                }
        else
                {
-               FileData *dir_fd = file_data_new_simple(path);
+               FileData *dir_fd = file_data_new_dir(path);
                tab_completion_append_to_history(pw->path_entry, path);
 
                pan_layout_set_fd(pw, dir_fd);
@@ -2309,7 +2277,7 @@ static void pan_window_close(PanWindow *pw)
        pref_list_int_set(PAN_PREF_GROUP, PAN_PREF_INFO_IMAGE, pw->info_image_size);
        pref_list_int_set(PAN_PREF_GROUP, PAN_PREF_INFO_EXIF, pw->info_includes_exif);
 
-       if (pw->idle_id != -1)
+       if (pw->idle_id)
                {
                g_source_remove(pw->idle_id);
                }
@@ -2325,7 +2293,7 @@ static void pan_window_close(PanWindow *pw)
        g_free(pw);
 }
 
-static gint pan_window_delete_cb(GtkWidget *w, GdkEventAny *event, gpointer data)
+static gboolean pan_window_delete_cb(GtkWidget *w, GdkEventAny *event, gpointer data)
 {
        PanWindow *pw = data;
 
@@ -2367,18 +2335,12 @@ static void pan_window_new_real(FileData *dir_fd)
 
        pw->ignore_symlinks = TRUE;
 
-       pw->list = NULL;
-       pw->list_static = NULL;
-       pw->list_grid = NULL;
-
-       pw->fs = NULL;
-       pw->overlay_id = -1;
-       pw->idle_id = -1;
+       pw->idle_id = 0;
 
        pw->window = window_new(GTK_WINDOW_TOPLEVEL, "panview", NULL, NULL, _("Pan View"));
 
-       geometry.min_width = 8;
-       geometry.min_height = 8;
+       geometry.min_width = DEFAULT_MINIMAL_WINDOW_SIZE;
+       geometry.min_height = DEFAULT_MINIMAL_WINDOW_SIZE;
        gtk_window_set_geometry_hints(GTK_WINDOW(pw->window), NULL, &geometry, GDK_HINT_MIN_SIZE);
 
        gtk_window_set_resizable(GTK_WINDOW(pw->window), TRUE);
@@ -2394,17 +2356,17 @@ static void pan_window_new_real(FileData *dir_fd)
        pref_label_new(box, _("Location:"));
        combo = tab_completion_new_with_history(&pw->path_entry, dir_fd->path, "pan_view_path", -1,
                                                pan_window_entry_activate_cb, pw);
-       g_signal_connect(G_OBJECT(pw->path_entry->parent), "changed",
+       g_signal_connect(G_OBJECT(gtk_widget_get_parent(pw->path_entry)), "changed",
                         G_CALLBACK(pan_window_entry_change_cb), pw);
        gtk_box_pack_start(GTK_BOX(box), combo, TRUE, TRUE, 0);
        gtk_widget_show(combo);
 
-       combo = gtk_combo_box_new_text();
-       gtk_combo_box_append_text(GTK_COMBO_BOX(combo), _("Timeline"));
-       gtk_combo_box_append_text(GTK_COMBO_BOX(combo), _("Calendar"));
-       gtk_combo_box_append_text(GTK_COMBO_BOX(combo), _("Folders"));
-       gtk_combo_box_append_text(GTK_COMBO_BOX(combo), _("Folders (flower)"));
-       gtk_combo_box_append_text(GTK_COMBO_BOX(combo), _("Grid"));
+       combo = gtk_combo_box_text_new();
+       gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo), _("Timeline"));
+       gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo), _("Calendar"));
+       gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo), _("Folders"));
+       gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo), _("Folders (flower)"));
+       gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo), _("Grid"));
 
        gtk_combo_box_set_active(GTK_COMBO_BOX(combo), pw->layout);
        g_signal_connect(G_OBJECT(combo), "changed",
@@ -2412,17 +2374,17 @@ static void pan_window_new_real(FileData *dir_fd)
        gtk_box_pack_start(GTK_BOX(box), combo, FALSE, FALSE, 0);
        gtk_widget_show(combo);
 
-       combo = gtk_combo_box_new_text();
-       gtk_combo_box_append_text(GTK_COMBO_BOX(combo), _("Dots"));
-       gtk_combo_box_append_text(GTK_COMBO_BOX(combo), _("No Images"));
-       gtk_combo_box_append_text(GTK_COMBO_BOX(combo), _("Small Thumbnails"));
-       gtk_combo_box_append_text(GTK_COMBO_BOX(combo), _("Normal Thumbnails"));
-       gtk_combo_box_append_text(GTK_COMBO_BOX(combo), _("Large Thumbnails"));
-       gtk_combo_box_append_text(GTK_COMBO_BOX(combo), _("1:10 (10%)"));
-       gtk_combo_box_append_text(GTK_COMBO_BOX(combo), _("1:4 (25%)"));
-       gtk_combo_box_append_text(GTK_COMBO_BOX(combo), _("1:3 (33%)"));
-       gtk_combo_box_append_text(GTK_COMBO_BOX(combo), _("1:2 (50%)"));
-       gtk_combo_box_append_text(GTK_COMBO_BOX(combo), _("1:1 (100%)"));
+       combo = gtk_combo_box_text_new();
+       gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo), _("Dots"));
+       gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo), _("No Images"));
+       gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo), _("Small Thumbnails"));
+       gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo), _("Normal Thumbnails"));
+       gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo), _("Large Thumbnails"));
+       gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo), _("1:10 (10%)"));
+       gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo), _("1:4 (25%)"));
+       gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo), _("1:3 (33%)"));
+       gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo), _("1:2 (50%)"));
+       gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo), _("1:1 (100%)"));
 
        gtk_combo_box_set_active(GTK_COMBO_BOX(combo), pw->size);
        g_signal_connect(G_OBJECT(combo), "changed",
@@ -2566,20 +2528,20 @@ static void pan_warning_ok_cb(GenericDialog *gd, gpointer data)
 
 static void pan_warning_hide_cb(GtkWidget *button, gpointer data)
 {
-       gint hide_dlg;
+       gboolean hide_dlg;
 
        hide_dlg = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button));
        pref_list_int_set(PAN_PREF_GROUP, PAN_PREF_HIDE_WARNING, hide_dlg);
 }
 
-static gint pan_warning(FileData *dir_fd)
+static gboolean pan_warning(FileData *dir_fd)
 {
        GenericDialog *gd;
        GtkWidget *box;
        GtkWidget *group;
        GtkWidget *button;
        GtkWidget *ct_button;
-       gint hide_dlg;
+       gboolean hide_dlg;
 
        if (dir_fd && strcmp(dir_fd->path, G_DIR_SEPARATOR_S) == 0)
                {
@@ -2593,7 +2555,7 @@ static gint pan_warning(FileData *dir_fd)
        if (!pref_list_int_get(PAN_PREF_GROUP, PAN_PREF_HIDE_WARNING, &hide_dlg)) hide_dlg = FALSE;
        if (hide_dlg) return FALSE;
 
-       gd = generic_dialog_new(_("Pan View Performance"), GQ_WMCLASS, "pan_view_warning", NULL, FALSE,
+       gd = generic_dialog_new(_("Pan View Performance"), "pan_view_warning", NULL, FALSE,
                                NULL, NULL);
        gd->data = file_data_ref(dir_fd);
        generic_dialog_add_button(gd, GTK_STOCK_OK, NULL,
@@ -2666,32 +2628,22 @@ static void pan_edit_cb(GtkWidget *widget, gpointer data)
 {
        PanWindow *pw;
        FileData *fd;
-       gint n;
+       const gchar *key = data;
 
        pw = submenu_item_get_data(widget);
-       n = GPOINTER_TO_INT(data);
        if (!pw) return;
 
        fd = pan_menu_click_fd(pw);
        if (fd)
                {
-               if (!editor_window_flag_set(n))
+               if (!editor_window_flag_set(key))
                        {
                        pan_fullscreen_toggle(pw, TRUE);
                        }
-               file_util_start_editor_from_file(n, fd, pw->imd->widget);
+               file_util_start_editor_from_file(key, fd, pw->imd->widget);
                }
 }
 
-static void pan_info_cb(GtkWidget *widget, gpointer data)
-{
-       PanWindow *pw = data;
-       FileData *fd;
-
-       fd = pan_menu_click_fd(pw);
-       if (fd) info_window_new(fd, NULL, NULL);
-}
-
 static void pan_zoom_in_cb(GtkWidget *widget, gpointer data)
 {
        PanWindow *pw = data;
@@ -2796,12 +2748,30 @@ static void pan_close_cb(GtkWidget *widget, gpointer data)
        pan_window_close(pw);
 }
 
+static void pan_popup_menu_destroy_cb(GtkWidget *widget, gpointer data)
+{
+       GList *editmenu_fd_list = data;
+
+       filelist_free(editmenu_fd_list);
+}
+
+static GList *pan_view_get_fd_list(PanWindow *pw)
+{
+       GList *list = NULL;
+       FileData *fd = pan_menu_click_fd(pw);
+       
+       if (fd) list = g_list_prepend(filelist_copy(fd->sidecar_files), file_data_ref(fd));
+       
+       return list;
+}
+
 static GtkWidget *pan_popup_menu(PanWindow *pw)
 {
        GtkWidget *menu;
        GtkWidget *submenu;
        GtkWidget *item;
-       gint active;
+       gboolean active;
+       GList *editmenu_fd_list;
 
        active = (pw->click_pi != NULL);
 
@@ -2815,12 +2785,13 @@ static GtkWidget *pan_popup_menu(PanWindow *pw)
                            G_CALLBACK(pan_zoom_1_1_cb), pw);
        menu_item_add_divider(menu);
 
-       submenu_add_edit(menu, &item, G_CALLBACK(pan_edit_cb), pw);
-       gtk_widget_set_sensitive(item, active);
-
-       menu_item_add_stock_sensitive(menu, _("_Properties"), GTK_STOCK_PROPERTIES, active,
-                                     G_CALLBACK(pan_info_cb), pw);
+       editmenu_fd_list = pan_view_get_fd_list(pw);
+       g_signal_connect(G_OBJECT(menu), "destroy",
+                        G_CALLBACK(pan_popup_menu_destroy_cb), editmenu_fd_list);
 
+       submenu_add_edit(menu, &item, G_CALLBACK(pan_edit_cb), pw, editmenu_fd_list);
+       gtk_widget_set_sensitive(item, active);
+       
        menu_item_add_stock_sensitive(menu, _("View in _new window"), GTK_STOCK_NEW, active,
                                      G_CALLBACK(pan_new_window_cb), pw);
 
@@ -2833,9 +2804,8 @@ static GtkWidget *pan_popup_menu(PanWindow *pw)
                                G_CALLBACK(pan_rename_cb), pw);
        menu_item_add_stock_sensitive(menu, _("_Delete..."), GTK_STOCK_DELETE, active,
                                      G_CALLBACK(pan_delete_cb), pw);
-       if (options->show_copy_path)
-               menu_item_add_sensitive(menu, _("_Copy path"), active,
-                                       G_CALLBACK(pan_copy_path_cb), pw);
+       menu_item_add_sensitive(menu, _("_Copy path"), active,
+                               G_CALLBACK(pan_copy_path_cb), pw);
 
        menu_item_add_divider(menu);
        item = menu_item_add_check(menu, _("Sort by E_xif date"), pw->exif_date_enable,
@@ -2913,7 +2883,7 @@ static void pan_window_get_dnd_data(GtkWidget *widget, GdkDragContext *context,
                {
                GList *list;
 
-               list = uri_filelist_from_text((gchar *)selection_data->data, TRUE);
+               list = uri_filelist_from_gtk_selection_data(selection_data);
                if (list && isdir(((FileData *)list->data)->path))
                        {
                        FileData *fd = list->data;
@@ -2935,34 +2905,15 @@ static void pan_window_set_dnd_data(GtkWidget *widget, GdkDragContext *context,
        fd = pan_menu_click_fd(pw);
        if (fd)
                {
-               gchar *text = NULL;
-               gint len;
-               gint plain_text;
                GList *list;
 
-               switch (info)
-                       {
-                       case TARGET_URI_LIST:
-                               plain_text = FALSE;
-                               break;
-                       case TARGET_TEXT_PLAIN:
-                       default:
-                               plain_text = TRUE;
-                               break;
-                       }
                list = g_list_append(NULL, fd);
-               text = uri_text_from_filelist(list, &len, plain_text);
+               uri_selection_data_set_uris_from_filelist(selection_data, list);
                g_list_free(list);
-               if (text)
-                       {
-                       gtk_selection_data_set(selection_data, selection_data->target,
-                                              8, (guchar *)text, len);
-                       g_free(text);
-                       }
                }
        else
                {
-               gtk_selection_data_set(selection_data, selection_data->target,
+               gtk_selection_data_set(selection_data, gtk_selection_data_get_target(selection_data),
                                       8, NULL, 0);
                }
 }
@@ -2987,8 +2938,4 @@ static void pan_window_dnd_init(PanWindow *pw)
                         G_CALLBACK(pan_window_get_dnd_data), pw);
 }
 
-/*
- *-----------------------------------------------------------------------------
- * maintenance (for rename, move, remove)
- *-----------------------------------------------------------------------------
- */
+/* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */