Sort headers using clang-tidy
[geeqie.git] / src / img-view.cc
index 2997b1d..9a00b94 100644 (file)
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
-#include "main.h"
 #include "img-view.h"
 
-#include "collect.h"
+#include <config.h>
+
 #include "collect-io.h"
+#include "collect.h"
+#include "compat.h"
+#include "debug.h"
 #include "dnd.h"
 #include "editors.h"
 #include "filedata.h"
 #include "fullscreen.h"
-#include "image.h"
 #include "image-load.h"
 #include "image-overlay.h"
-#include "layout.h"
-#include "layout-image.h"
+#include "image.h"
+#include "intl.h"
 #include "layout-util.h"
+#include "main-defines.h"
+#include "main.h"
 #include "menu.h"
 #include "misc.h"
 #include "pixbuf-util.h"
-#include "pixbuf-renderer.h"
 #include "print.h"
 #include "slideshow.h"
 #include "ui-fileops.h"
 #include "utilops.h"
 #include "window.h"
 
-#include <gdk/gdkkeysyms.h> /* for keyboard values */
-
-
-typedef struct _ViewWindow ViewWindow;
-struct _ViewWindow
+struct ViewWindow
 {
        GtkWidget *window;
        ImageWindow *imd;
@@ -62,7 +61,7 @@ struct _ViewWindow
 };
 
 
-static GList *view_window_list = NULL;
+static GList *view_window_list = nullptr;
 
 
 static GtkWidget *view_popup_menu(ViewWindow *vw);
@@ -85,7 +84,7 @@ static void view_window_notify_cb(FileData *fd, NotifyType type, gpointer data);
  * This array must be kept in sync with the contents of:\n
  *  @link view_popup_menu() @endlink \n
  *  @link view_window_key_press_cb() @endlink
- * 
+ *
  * See also @link hard_coded_window_keys @endlink
  **/
 hard_coded_window_keys image_window_keys[] = {
@@ -93,50 +92,50 @@ hard_coded_window_keys image_window_keys[] = {
        {GDK_CONTROL_MASK, 'M', N_("Move")},
        {GDK_CONTROL_MASK, 'R', N_("Rename")},
        {GDK_CONTROL_MASK, 'D', N_("Move to Trash")},
-       {0, GDK_KEY_Delete, N_("Move to Trash")},
+       {static_cast<GdkModifierType>(0), GDK_KEY_Delete, N_("Move to Trash")},
        {GDK_SHIFT_MASK, GDK_KEY_Delete, N_("Delete")},
        {GDK_CONTROL_MASK, 'W', N_("Close window")},
        {GDK_SHIFT_MASK, 'R', N_("Rotate 180°")},
        {GDK_SHIFT_MASK, 'M', N_("Rotate mirror")},
        {GDK_SHIFT_MASK, 'F', N_("Rotate flip")},
-       {0, ']', N_(" Rotate counterclockwise 90°")},
-       {0, '[', N_(" Rotate clockwise 90°")},
-       {0, GDK_KEY_Page_Up, N_("Previous")},
-       {0, GDK_KEY_KP_Page_Up, N_("Previous")},
-       {0, GDK_KEY_BackSpace, N_("Previous")},
-       {0, 'B', N_("Previous")},
-       {0, GDK_KEY_Page_Down, N_("Next")},
-       {0, GDK_KEY_KP_Page_Down, N_("Next")},
-       {0, GDK_KEY_space, N_("Next")},
-       {0, 'N', N_("Next")},
-       {0, GDK_KEY_equal, N_("Zoom in")},
-       {0, GDK_KEY_plus, N_("Zoom in")},
-       {0, GDK_KEY_minus, N_("Zoom out")},
-       {0, 'X', N_("Zoom to fit")},
-       {0, GDK_KEY_KP_Multiply, N_("Zoom to fit")},
-       {0, 'Z', N_("Zoom 1:1")},
-       {0, GDK_KEY_KP_Divide, N_("Zoom 1:1")},
-       {0, GDK_KEY_1, N_("Zoom 1:1")},
-       {0, '2', N_("Zoom 2:1")},
-       {0, '3', N_("Zoom 3:1")},
-       {0, '4', N_("Zoom 4:1")},
-       {0, '7', N_("Zoom 1:4")},
-       {0, '8', N_("Zoom 1:3")},
-       {0, '9', N_("Zoom 1:2")},
-       {0, 'W', N_("Zoom fit window width")},
-       {0, 'H', N_("Zoom fit window height")},
-       {0, 'S', N_("Toggle slideshow")},
-       {0, 'P', N_("Pause slideshow")},
-       {0, 'R', N_("Reload image")},
-       {0, 'F', N_("Full screen")},
-       {0, 'V', N_("Fullscreen")},
-       {0, GDK_KEY_F11, N_("Fullscreen")},
-       {0, 'I', N_("Image overlay")},
-       {0, GDK_KEY_Escape, N_("Exit fullscreen")},
-       {0, GDK_KEY_Escape, N_("Close window")},
+       {static_cast<GdkModifierType>(0), ']', N_(" Rotate counterclockwise 90°")},
+       {static_cast<GdkModifierType>(0), '[', N_(" Rotate clockwise 90°")},
+       {static_cast<GdkModifierType>(0), GDK_KEY_Page_Up, N_("Previous")},
+       {static_cast<GdkModifierType>(0), GDK_KEY_KP_Page_Up, N_("Previous")},
+       {static_cast<GdkModifierType>(0), GDK_KEY_BackSpace, N_("Previous")},
+       {static_cast<GdkModifierType>(0), 'B', N_("Previous")},
+       {static_cast<GdkModifierType>(0), GDK_KEY_Page_Down, N_("Next")},
+       {static_cast<GdkModifierType>(0), GDK_KEY_KP_Page_Down, N_("Next")},
+       {static_cast<GdkModifierType>(0), GDK_KEY_space, N_("Next")},
+       {static_cast<GdkModifierType>(0), 'N', N_("Next")},
+       {static_cast<GdkModifierType>(0), GDK_KEY_equal, N_("Zoom in")},
+       {static_cast<GdkModifierType>(0), GDK_KEY_plus, N_("Zoom in")},
+       {static_cast<GdkModifierType>(0), GDK_KEY_minus, N_("Zoom out")},
+       {static_cast<GdkModifierType>(0), 'X', N_("Zoom to fit")},
+       {static_cast<GdkModifierType>(0), GDK_KEY_KP_Multiply, N_("Zoom to fit")},
+       {static_cast<GdkModifierType>(0), 'Z', N_("Zoom 1:1")},
+       {static_cast<GdkModifierType>(0), GDK_KEY_KP_Divide, N_("Zoom 1:1")},
+       {static_cast<GdkModifierType>(0), GDK_KEY_1, N_("Zoom 1:1")},
+       {static_cast<GdkModifierType>(0), '2', N_("Zoom 2:1")},
+       {static_cast<GdkModifierType>(0), '3', N_("Zoom 3:1")},
+       {static_cast<GdkModifierType>(0), '4', N_("Zoom 4:1")},
+       {static_cast<GdkModifierType>(0), '7', N_("Zoom 1:4")},
+       {static_cast<GdkModifierType>(0), '8', N_("Zoom 1:3")},
+       {static_cast<GdkModifierType>(0), '9', N_("Zoom 1:2")},
+       {static_cast<GdkModifierType>(0), 'W', N_("Zoom fit window width")},
+       {static_cast<GdkModifierType>(0), 'H', N_("Zoom fit window height")},
+       {static_cast<GdkModifierType>(0), 'S', N_("Toggle slideshow")},
+       {static_cast<GdkModifierType>(0), 'P', N_("Pause slideshow")},
+       {static_cast<GdkModifierType>(0), 'R', N_("Reload image")},
+       {static_cast<GdkModifierType>(0), 'F', N_("Full screen")},
+       {static_cast<GdkModifierType>(0), 'V', N_("Fullscreen")},
+       {static_cast<GdkModifierType>(0), GDK_KEY_F11, N_("Fullscreen")},
+       {static_cast<GdkModifierType>(0), 'I', N_("Image overlay")},
+       {static_cast<GdkModifierType>(0), GDK_KEY_Escape, N_("Exit fullscreen")},
+       {static_cast<GdkModifierType>(0), GDK_KEY_Escape, N_("Close window")},
        {GDK_SHIFT_MASK, 'G', N_("Desaturate")},
        {GDK_SHIFT_MASK, 'P', N_("Print")},
-       {0, 0, NULL}
+       {static_cast<GdkModifierType>(0), 0, nullptr}
 };
 
 
@@ -157,8 +156,8 @@ static void view_window_set_list(ViewWindow *vw, GList *list)
 {
 
        filelist_free(vw->list);
-       vw->list = NULL;
-       vw->list_pointer = NULL;
+       vw->list = nullptr;
+       vw->list_pointer = nullptr;
 
        vw->list = filelist_copy(list);
 }
@@ -178,7 +177,7 @@ static void view_collection_step(ViewWindow *vw, gboolean next)
        ImageWindow *imd = view_window_active_image(vw);
        CollectionData *cd;
        CollectInfo *info;
-       CollectInfo *read_ahead_info = NULL;
+       CollectInfo *read_ahead_info = nullptr;
 
        cd = image_get_collection(imd, &info);
 
@@ -217,7 +216,7 @@ static void view_collection_step_to_end(ViewWindow *vw, gboolean last)
        ImageWindow *imd = view_window_active_image(vw);
        CollectionData *cd;
        CollectInfo *info;
-       CollectInfo *read_ahead_info = NULL;
+       CollectInfo *read_ahead_info = nullptr;
 
        cd = image_get_collection(imd, &info);
 
@@ -266,7 +265,7 @@ static void view_list_step(ViewWindow *vw, gboolean next)
                        {
                        FileData *temp;
 
-                       temp = work->data;
+                       temp = static_cast<FileData *>(work->data);
 
                        if (fd == temp)
                                {
@@ -280,7 +279,7 @@ static void view_list_step(ViewWindow *vw, gboolean next)
                }
        if (!work) return;
 
-       work_ahead = NULL;
+       work_ahead = nullptr;
        if (next)
                {
                work = work->next;
@@ -295,12 +294,12 @@ static void view_list_step(ViewWindow *vw, gboolean next)
        if (!work) return;
 
        vw->list_pointer = work;
-       fd = work->data;
+       fd = static_cast<FileData *>(work->data);
        image_change_fd(imd, fd, image_zoom_get_default(imd));
 
        if (options->image.enable_read_ahead && work_ahead)
                {
-               FileData *next_fd = work_ahead->data;
+               auto next_fd = static_cast<FileData *>(work_ahead->data);
                image_prebuffer_set(imd, next_fd);
                }
 }
@@ -326,12 +325,12 @@ static void view_list_step_to_end(ViewWindow *vw, gboolean last)
                }
 
        vw->list_pointer = work;
-       fd = work->data;
+       fd = static_cast<FileData *>(work->data);
        image_change_fd(imd, fd, image_zoom_get_default(imd));
 
        if (options->image.enable_read_ahead && work_ahead)
                {
-               FileData *next_fd = work_ahead->data;
+               auto next_fd = static_cast<FileData *>(work_ahead->data);
                image_prebuffer_set(imd, next_fd);
                }
 }
@@ -386,9 +385,26 @@ static void view_step_to_end(ViewWindow *vw, gboolean last)
  *-----------------------------------------------------------------------------
  */
 
+static void view_window_press_cb(GtkWidget *, GdkEventButton *bevent, gpointer data)
+{
+       auto vw = static_cast<ViewWindow *>(data);
+
+       switch (bevent->button)
+               {
+               case MOUSE_BUTTON_LEFT:
+                       if (bevent->type == GDK_2BUTTON_PRESS)
+                               {
+                               view_fullscreen_toggle(vw, TRUE);
+                               }
+                       break;
+               default:
+                       break;
+               }
+}
+
 static gboolean view_window_key_press_cb(GtkWidget * (widget), GdkEventKey *event, gpointer data)
 {
-       ViewWindow *vw = data;
+       auto vw = static_cast<ViewWindow *>(data);
        ImageWindow *imd;
        gint stop_signal;
        GtkWidget *menu;
@@ -448,17 +464,17 @@ static gboolean view_window_key_press_cb(GtkWidget * (widget), GdkEventKey *even
                        case '0':
                                break;
                        case 'C': case 'c':
-                               file_util_copy(image_get_fd(imd), NULL, NULL, imd->widget);
+                               file_util_copy(image_get_fd(imd), nullptr, nullptr, imd->widget);
                                break;
                        case 'M': case 'm':
-                               file_util_move(image_get_fd(imd), NULL, NULL, imd->widget);
+                               file_util_move(image_get_fd(imd), nullptr, nullptr, imd->widget);
                                break;
                        case 'R': case 'r':
-                               file_util_rename(image_get_fd(imd), NULL, imd->widget);
+                               file_util_rename(image_get_fd(imd), nullptr, imd->widget);
                                break;
                        case 'D': case 'd':
                                options->file_ops.safe_delete_enable = TRUE;
-                               file_util_delete(image_get_fd(imd), NULL, imd->widget);
+                               file_util_delete(image_get_fd(imd), nullptr, imd->widget);
                                break;
                        case 'W': case 'w':
                                view_window_close(vw);
@@ -493,7 +509,7 @@ static gboolean view_window_key_press_cb(GtkWidget * (widget), GdkEventKey *even
                                imd = view_window_active_image(vw);
                                fd = image_get_fd(imd);
                                print_window_new(fd,
-                                                fd ? g_list_append(NULL, file_data_ref(fd)) : NULL,
+                                                fd ? g_list_append(nullptr, file_data_ref(fd)) : nullptr,
                                                 filelist_copy(vw->list), vw->window);
                                }
                                break;
@@ -501,7 +517,7 @@ static gboolean view_window_key_press_cb(GtkWidget * (widget), GdkEventKey *even
                                if (options->file_ops.enable_delete_key)
                                        {
                                        options->file_ops.safe_delete_enable = FALSE;
-                                       file_util_delete(image_get_fd(imd), NULL, imd->widget);
+                                       file_util_delete(image_get_fd(imd), nullptr, imd->widget);
                                        }
                                break;
                        default:
@@ -600,7 +616,7 @@ static gboolean view_window_key_press_cb(GtkWidget * (widget), GdkEventKey *even
                                if (options->file_ops.enable_delete_key)
                                        {
                                        options->file_ops.safe_delete_enable = TRUE;
-                                       file_util_delete(image_get_fd(imd), NULL, imd->widget);
+                                       file_util_delete(image_get_fd(imd), nullptr, imd->widget);
                                        }
                                break;
                        case GDK_KEY_Escape:
@@ -616,7 +632,7 @@ static gboolean view_window_key_press_cb(GtkWidget * (widget), GdkEventKey *even
                        case GDK_KEY_Menu:
                        case GDK_KEY_F10:
                                menu = view_popup_menu(vw);
-                               gtk_menu_popup_at_widget(GTK_MENU(menu), widget, GDK_GRAVITY_CENTER, GDK_GRAVITY_CENTER, NULL);
+                               gtk_menu_popup_at_widget(GTK_MENU(menu), widget, GDK_GRAVITY_CENTER, GDK_GRAVITY_CENTER, nullptr);
                                break;
                        default:
                                stop_signal = FALSE;
@@ -639,7 +655,7 @@ static gboolean view_window_key_press_cb(GtkWidget * (widget), GdkEventKey *even
  */
 static void button_cb(ImageWindow *imd, GdkEventButton *event, gpointer data)
 {
-       ViewWindow *vw = data;
+       auto vw = static_cast<ViewWindow *>(data);
        GtkWidget *menu;
        gchar *dest_dir;
        LayoutWindow *lw_new;
@@ -647,7 +663,7 @@ static void button_cb(ImageWindow *imd, GdkEventButton *event, gpointer data)
        switch (event->button)
                {
                case MOUSE_BUTTON_LEFT:
-                       if (options->image_l_click_archive && imd->image_fd->format_class == FORMAT_CLASS_ARCHIVE)
+                       if (options->image_l_click_archive && imd->image_fd->format_class == FORMAT_CLASS_ARCHIVE)
                                {
                                dest_dir = open_archive(imd->image_fd);
                                if (dest_dir)
@@ -658,10 +674,10 @@ static void button_cb(ImageWindow *imd, GdkEventButton *event, gpointer data)
                                        }
                                else
                                        {
-                                       warning_dialog(_("Cannot open archive file"), _("See the Log Window"), GTK_STOCK_DIALOG_WARNING, NULL);
+                                       warning_dialog(_("Cannot open archive file"), _("See the Log Window"), GQ_ICON_DIALOG_WARNING, nullptr);
                                        }
                                }
-                       else if (options->image_l_click_video && options->image_l_click_video_editor && imd->image_fd->format_class == FORMAT_CLASS_VIDEO)
+                       else if (options->image_l_click_video && options->image_l_click_video_editor && imd->image_fd->format_class == FORMAT_CLASS_VIDEO)
                                {
                                start_editor_from_file(options->image_l_click_video_editor, imd->image_fd);
                                }
@@ -674,7 +690,7 @@ static void button_cb(ImageWindow *imd, GdkEventButton *event, gpointer data)
                        break;
                case MOUSE_BUTTON_RIGHT:
                        menu = view_popup_menu(vw);
-                       gtk_menu_popup_at_pointer(GTK_MENU(menu), NULL);
+                       gtk_menu_popup_at_pointer(GTK_MENU(menu), nullptr);
                        break;
                default:
                        break;
@@ -683,7 +699,7 @@ static void button_cb(ImageWindow *imd, GdkEventButton *event, gpointer data)
 
 static void scroll_cb(ImageWindow *imd, GdkEventScroll *event, gpointer data)
 {
-       ViewWindow *vw = data;
+       auto vw = static_cast<ViewWindow *>(data);
 
        if ((event->state & GDK_CONTROL_MASK) ||
                                (imd->mouse_wheel_mode && !options->image_lm_click_nav))
@@ -700,7 +716,7 @@ static void scroll_cb(ImageWindow *imd, GdkEventScroll *event, gpointer data)
                                break;
                        }
                }
-       else if ( (event->state & GDK_SHIFT_MASK) != (guint) (options->mousewheel_scrolls))
+       else if ( (event->state & GDK_SHIFT_MASK) != static_cast<guint>(options->mousewheel_scrolls))
                {
                switch (event->direction)
                        {
@@ -742,11 +758,11 @@ static void view_image_set_buttons(ViewWindow *vw, ImageWindow *imd)
        image_set_scroll_func(imd, scroll_cb, vw);
 }
 
-static void view_fullscreen_stop_func(FullScreenData *UNUSED(fs), gpointer data)
+static void view_fullscreen_stop_func(FullScreenData *, gpointer data)
 {
-       ViewWindow *vw = data;
+       auto vw = static_cast<ViewWindow *>(data);
 
-       vw->fs = NULL;
+       vw->fs = nullptr;
 
        if (vw->ss) vw->ss->imd = vw->imd;
 }
@@ -799,13 +815,13 @@ static void view_slideshow_prev(ViewWindow *vw)
        if (vw->ss) slideshow_prev(vw->ss);
 }
 
-static void view_slideshow_stop_func(SlideShowData *UNUSED(fs), gpointer data)
+static void view_slideshow_stop_func(SlideShowData *, gpointer data)
 {
-       ViewWindow *vw = data;
+       auto vw = static_cast<ViewWindow *>(data);
        GList *work;
        FileData *fd;
 
-       vw->ss = NULL;
+       vw->ss = nullptr;
 
        work = vw->list;
        fd = image_get_fd(view_window_active_image(vw));
@@ -813,11 +829,11 @@ static void view_slideshow_stop_func(SlideShowData *UNUSED(fs), gpointer data)
                {
                FileData *temp;
 
-               temp = work->data;
+               temp = static_cast<FileData *>(work->data);
                if (fd == temp)
                        {
                        vw->list_pointer = work;
-                       work = NULL;
+                       work = nullptr;
                        }
                else
                        {
@@ -835,17 +851,17 @@ static void view_slideshow_start(ViewWindow *vw)
 
                if (vw->list)
                        {
-                       vw->ss = slideshow_start_from_filelist(NULL, view_window_active_image(vw),
+                       vw->ss = slideshow_start_from_filelist(nullptr, view_window_active_image(vw),
                                                                filelist_copy(vw->list),
                                                                view_slideshow_stop_func, vw);
-                       vw->list_pointer = NULL;
+                       vw->list_pointer = nullptr;
                        return;
                        }
 
                cd = image_get_collection(view_window_active_image(vw), &info);
                if (cd && info)
                        {
-                       vw->ss = slideshow_start_from_collection(NULL, view_window_active_image(vw), cd,
+                       vw->ss = slideshow_start_from_collection(nullptr, view_window_active_image(vw), cd,
                                                                 view_slideshow_stop_func, vw, info);
                        }
                }
@@ -856,9 +872,9 @@ static void view_slideshow_stop(ViewWindow *vw)
        if (vw->ss) slideshow_free(vw->ss);
 }
 
-static void view_window_destroy_cb(GtkWidget *UNUSED(widget), gpointer data)
+static void view_window_destroy_cb(GtkWidget *, gpointer data)
 {
-       ViewWindow *vw = data;
+       auto vw = static_cast<ViewWindow *>(data);
 
        view_window_list = g_list_remove(view_window_list, vw);
 
@@ -876,12 +892,12 @@ static void view_window_close(ViewWindow *vw)
 {
        view_slideshow_stop(vw);
        view_fullscreen_toggle(vw, TRUE);
-       gtk_widget_destroy(vw->window);
+       gq_gtk_widget_destroy(vw->window);
 }
 
-static gboolean view_window_delete_cb(GtkWidget *UNUSED(w), GdkEventAny *UNUSED(event), gpointer data)
+static gboolean view_window_delete_cb(GtkWidget *, GdkEventAny *, gpointer data)
 {
-       ViewWindow *vw = data;
+       auto vw = static_cast<ViewWindow *>(data);
 
        view_window_close(vw);
        return TRUE;
@@ -892,18 +908,19 @@ static ViewWindow *real_view_window_new(FileData *fd, GList *list, CollectionDat
        ViewWindow *vw;
        GtkAllocation req_size;
        GdkGeometry geometry;
-       gint w, h;
+       gint w;
+       gint h;
 
-       if (!fd && !list && (!cd || !info)) return NULL;
+       if (!fd && !list && (!cd || !info)) return nullptr;
 
        vw = g_new0(ViewWindow, 1);
 
-       vw->window = window_new(GTK_WINDOW_TOPLEVEL, "view", PIXBUF_INLINE_ICON_VIEW, NULL, NULL);
+       vw->window = window_new("view", PIXBUF_INLINE_ICON_VIEW, nullptr, nullptr);
        DEBUG_NAME(vw->window);
 
        geometry.min_width = DEFAULT_MINIMAL_WINDOW_SIZE;
        geometry.min_height = DEFAULT_MINIMAL_WINDOW_SIZE;
-       gtk_window_set_geometry_hints(GTK_WINDOW(vw->window), NULL, &geometry, GDK_HINT_MIN_SIZE);
+       gtk_window_set_geometry_hints(GTK_WINDOW(vw->window), nullptr, &geometry, GDK_HINT_MIN_SIZE);
 
        gtk_window_set_resizable(GTK_WINDOW(vw->window), TRUE);
        gtk_container_set_border_width(GTK_CONTAINER(vw->window), 0);
@@ -916,12 +933,12 @@ static ViewWindow *real_view_window_new(FileData *fd, GList *list, CollectionDat
 
        image_background_set_color_from_options(vw->imd, FALSE);
 
-       image_attach_window(vw->imd, vw->window, NULL, GQ_APPNAME, TRUE);
+       image_attach_window(vw->imd, vw->window, nullptr, GQ_APPNAME, TRUE);
 
        image_auto_refresh_enable(vw->imd, TRUE);
        image_top_window_set_sync(vw->imd, TRUE);
 
-       gtk_container_add(GTK_CONTAINER(vw->window), vw->imd->widget);
+       gq_gtk_container_add(GTK_WIDGET(vw->window), vw->imd->widget);
        gtk_widget_show(vw->imd->widget);
 
        view_window_dnd_init(vw);
@@ -934,9 +951,12 @@ static ViewWindow *real_view_window_new(FileData *fd, GList *list, CollectionDat
                         G_CALLBACK(view_window_delete_cb), vw);
        g_signal_connect(G_OBJECT(vw->window), "key_press_event",
                         G_CALLBACK(view_window_key_press_cb), vw);
+       g_signal_connect(G_OBJECT(vw->window), "button_press_event",
+                        G_CALLBACK(view_window_press_cb), vw);
+
        if (cd && info)
                {
-               image_change_from_collection(vw->imd, cd, info, image_zoom_get_default(NULL));
+               image_change_from_collection(vw->imd, cd, info, image_zoom_get_default(nullptr));
                /* Grab the fd so we can correctly size the window in
                   the call to image_load_dimensions() below. */
                fd = info->fd;
@@ -951,19 +971,19 @@ static ViewWindow *real_view_window_new(FileData *fd, GList *list, CollectionDat
                {
                view_window_set_list(vw, list);
                vw->list_pointer = vw->list;
-               image_change_fd(vw->imd, (FileData *)vw->list->data, image_zoom_get_default(NULL));
+               image_change_fd(vw->imd, static_cast<FileData *>(vw->list->data), image_zoom_get_default(nullptr));
                /* Set fd to first in list */
-               fd = vw->list->data;
+               fd = static_cast<FileData *>(vw->list->data);
 
                if (options->image.enable_read_ahead)
                        {
                        GList *work = vw->list->next;
-                       if (work) image_prebuffer_set(vw->imd, (FileData *)work->data);
+                       if (work) image_prebuffer_set(vw->imd, static_cast<FileData *>(work->data));
                        }
                }
        else
                {
-               image_change_fd(vw->imd, fd, image_zoom_get_default(NULL));
+               image_change_fd(vw->imd, fd, image_zoom_get_default(nullptr));
                }
 
        /* Wait until image is loaded otherwise size is not defined */
@@ -995,6 +1015,7 @@ static ViewWindow *real_view_window_new(FileData *fd, GList *list, CollectionDat
         * The problem occurs when zoom is set to Original Size and Preload
         * Next Image is set.
         * An extra reload is required to force the image to be displayed.
+        * See also layout-image.cc layout_image_full_screen_start()
         * This is probably not the correct solution.
         **/
        image_reload(vw->imd);
@@ -1002,9 +1023,9 @@ static ViewWindow *real_view_window_new(FileData *fd, GList *list, CollectionDat
        return vw;
 }
 
-static void view_window_collection_unref_cb(GtkWidget *UNUSED(widget), gpointer data)
+static void view_window_collection_unref_cb(GtkWidget *, gpointer data)
 {
-       CollectionData *cd = data;
+       auto cd = static_cast<CollectionData *>(data);
 
        collection_unref(cd);
 }
@@ -1029,38 +1050,38 @@ void view_window_new(FileData *fd)
                        else
                                {
                                collection_unref(cd);
-                               cd = NULL;
-                               info = NULL;
+                               cd = nullptr;
+                               info = nullptr;
                                }
-                       vw = real_view_window_new(NULL, NULL, cd, info);
+                       vw = real_view_window_new(nullptr, nullptr, cd, info);
                        if (vw && cd)
                                {
                                g_signal_connect(G_OBJECT(vw->window), "destroy",
                                                 G_CALLBACK(view_window_collection_unref_cb), cd);
                                }
                        }
-               else if (isdir(fd->path) && filelist_read(fd, &list, NULL))
+               else if (isdir(fd->path) && filelist_read(fd, &list, nullptr))
                        {
                        list = filelist_sort_path(list);
                        list = filelist_filter(list, FALSE);
-                       real_view_window_new(NULL, list, NULL, NULL);
+                       real_view_window_new(nullptr, list, nullptr, nullptr);
                        filelist_free(list);
                        }
                else
                        {
-                       real_view_window_new(fd, NULL, NULL, NULL);
+                       real_view_window_new(fd, nullptr, nullptr, nullptr);
                        }
                }
 }
 
 void view_window_new_from_list(GList *list)
 {
-       real_view_window_new(NULL, list, NULL, NULL);
+       real_view_window_new(nullptr, list, nullptr, nullptr);
 }
 
 void view_window_new_from_collection(CollectionData *cd, CollectInfo *info)
 {
-       real_view_window_new(NULL, NULL, cd, info);
+       real_view_window_new(nullptr, nullptr, cd, info);
 }
 
 /*
@@ -1069,14 +1090,14 @@ void view_window_new_from_collection(CollectionData *cd, CollectInfo *info)
  *-----------------------------------------------------------------------------
  */
 
-void view_window_colors_update(void)
+void view_window_colors_update()
 {
        GList *work;
 
        work = view_window_list;
        while (work)
                {
-               ViewWindow *vw = work->data;
+               auto vw = static_cast<ViewWindow *>(work->data);
                work = work->next;
 
                image_background_set_color_from_options(vw->imd, !!vw->fs);
@@ -1090,7 +1111,7 @@ gboolean view_window_find_image(ImageWindow *imd, gint *index, gint *total)
        work = view_window_list;
        while (work)
                {
-               ViewWindow *vw = work->data;
+               auto vw = static_cast<ViewWindow *>(work->data);
                work = work->next;
 
                if (vw->imd == imd ||
@@ -1125,9 +1146,9 @@ gboolean view_window_find_image(ImageWindow *imd, gint *index, gint *total)
  *-----------------------------------------------------------------------------
  */
 
-static void view_new_window_cb(GtkWidget *UNUSED(widget), gpointer data)
+static void view_new_window_cb(GtkWidget *, gpointer data)
 {
-       ViewWindow *vw = data;
+       auto vw = static_cast<ViewWindow *>(data);
        CollectionData *cd;
        CollectInfo *info;
 
@@ -1147,9 +1168,9 @@ static void view_edit_cb(GtkWidget *widget, gpointer data)
 {
        ViewWindow *vw;
        ImageWindow *imd;
-       const gchar *key = data;
+       auto key = static_cast<const gchar *>(data);
 
-       vw = submenu_item_get_data(widget);
+       vw = static_cast<ViewWindow *>(submenu_item_get_data(widget));
        if (!vw) return;
 
        if (!editor_window_flag_set(key))
@@ -1166,137 +1187,137 @@ static void view_alter_cb(GtkWidget *widget, gpointer data)
        ViewWindow *vw;
        AlterType type;
 
-       vw = submenu_item_get_data(widget);
-       type = GPOINTER_TO_INT(data);
+       vw = static_cast<ViewWindow *>(submenu_item_get_data(widget));
+       type = static_cast<AlterType>(GPOINTER_TO_INT(data));
 
        if (!vw) return;
        image_alter_orientation(vw->imd, vw->imd->image_fd, type);
 }
 
-static void view_zoom_in_cb(GtkWidget *UNUSED(widget), gpointer data)
+static void view_zoom_in_cb(GtkWidget *, gpointer data)
 {
-       ViewWindow *vw = data;
+       auto vw = static_cast<ViewWindow *>(data);
 
        image_zoom_adjust(view_window_active_image(vw), get_zoom_increment());
 }
 
-static void view_zoom_out_cb(GtkWidget *UNUSED(widget), gpointer data)
+static void view_zoom_out_cb(GtkWidget *, gpointer data)
 {
-       ViewWindow *vw = data;
+       auto vw = static_cast<ViewWindow *>(data);
 
        image_zoom_adjust(view_window_active_image(vw), -get_zoom_increment());
 }
 
-static void view_zoom_1_1_cb(GtkWidget *UNUSED(widget), gpointer data)
+static void view_zoom_1_1_cb(GtkWidget *, gpointer data)
 {
-       ViewWindow *vw = data;
+       auto vw = static_cast<ViewWindow *>(data);
 
        image_zoom_set(view_window_active_image(vw), 1.0);
 }
 
-static void view_zoom_fit_cb(GtkWidget *UNUSED(widget), gpointer data)
+static void view_zoom_fit_cb(GtkWidget *, gpointer data)
 {
-       ViewWindow *vw = data;
+       auto vw = static_cast<ViewWindow *>(data);
 
        image_zoom_set(view_window_active_image(vw), 0.0);
 }
 
-static void view_copy_cb(GtkWidget *UNUSED(widget), gpointer data)
+static void view_copy_cb(GtkWidget *, gpointer data)
 {
-       ViewWindow *vw = data;
+       auto vw = static_cast<ViewWindow *>(data);
        ImageWindow *imd;
 
        imd = view_window_active_image(vw);
-       file_util_copy(image_get_fd(imd), NULL, NULL, imd->widget);
+       file_util_copy(image_get_fd(imd), nullptr, nullptr, imd->widget);
 }
 
-static void view_move_cb(GtkWidget *UNUSED(widget), gpointer data)
+static void view_move_cb(GtkWidget *, gpointer data)
 {
-       ViewWindow *vw = data;
+       auto vw = static_cast<ViewWindow *>(data);
        ImageWindow *imd;
 
        imd = view_window_active_image(vw);
-       file_util_move(image_get_fd(imd), NULL, NULL, imd->widget);
+       file_util_move(image_get_fd(imd), nullptr, nullptr, imd->widget);
 }
 
-static void view_rename_cb(GtkWidget *UNUSED(widget), gpointer data)
+static void view_rename_cb(GtkWidget *, gpointer data)
 {
-       ViewWindow *vw = data;
+       auto vw = static_cast<ViewWindow *>(data);
        ImageWindow *imd;
 
        imd = view_window_active_image(vw);
-       file_util_rename(image_get_fd(imd), NULL, imd->widget);
+       file_util_rename(image_get_fd(imd), nullptr, imd->widget);
 }
 
-static void view_delete_cb(GtkWidget *UNUSED(widget), gpointer data)
+static void view_delete_cb(GtkWidget *, gpointer data)
 {
-       ViewWindow *vw = data;
+       auto vw = static_cast<ViewWindow *>(data);
        ImageWindow *imd;
 
        imd = view_window_active_image(vw);
        options->file_ops.safe_delete_enable = FALSE;
-       file_util_delete(image_get_fd(imd), NULL, imd->widget);
+       file_util_delete(image_get_fd(imd), nullptr, imd->widget);
 }
 
-static void view_move_to_trash_cb(GtkWidget *UNUSED(widget), gpointer data)
+static void view_move_to_trash_cb(GtkWidget *, gpointer data)
 {
-       ViewWindow *vw = data;
+       auto vw = static_cast<ViewWindow *>(data);
        ImageWindow *imd;
 
        imd = view_window_active_image(vw);
        options->file_ops.safe_delete_enable = TRUE;
-       file_util_delete(image_get_fd(imd), NULL, imd->widget);
+       file_util_delete(image_get_fd(imd), nullptr, imd->widget);
 }
 
-static void view_copy_path_cb(GtkWidget *UNUSED(widget), gpointer data)
+static void view_copy_path_cb(GtkWidget *, gpointer data)
 {
-       ViewWindow *vw = data;
+       auto vw = static_cast<ViewWindow *>(data);
        ImageWindow *imd;
 
        imd = view_window_active_image(vw);
        file_util_copy_path_to_clipboard(image_get_fd(imd), TRUE);
 }
 
-static void view_copy_path_unquoted_cb(GtkWidget *UNUSED(widget), gpointer data)
+static void view_copy_path_unquoted_cb(GtkWidget *, gpointer data)
 {
-       ViewWindow *vw = data;
+       auto vw = static_cast<ViewWindow *>(data);
        ImageWindow *imd;
 
        imd = view_window_active_image(vw);
        file_util_copy_path_to_clipboard(image_get_fd(imd), FALSE);
 }
 
-static void view_fullscreen_cb(GtkWidget *UNUSED(widget), gpointer data)
+static void view_fullscreen_cb(GtkWidget *, gpointer data)
 {
-       ViewWindow *vw = data;
+       auto vw = static_cast<ViewWindow *>(data);
 
        view_fullscreen_toggle(vw, FALSE);
 }
 
-static void view_slideshow_start_cb(GtkWidget *UNUSED(widget), gpointer data)
+static void view_slideshow_start_cb(GtkWidget *, gpointer data)
 {
-       ViewWindow *vw = data;
+       auto vw = static_cast<ViewWindow *>(data);
 
        view_slideshow_start(vw);
 }
 
-static void view_slideshow_stop_cb(GtkWidget *UNUSED(widget), gpointer data)
+static void view_slideshow_stop_cb(GtkWidget *, gpointer data)
 {
-       ViewWindow *vw = data;
+       auto vw = static_cast<ViewWindow *>(data);
 
        view_slideshow_stop(vw);
 }
 
-static void view_slideshow_pause_cb(GtkWidget *UNUSED(widget), gpointer data)
+static void view_slideshow_pause_cb(GtkWidget *, gpointer data)
 {
-       ViewWindow *vw = data;
+       auto vw = static_cast<ViewWindow *>(data);
 
        slideshow_pause_toggle(vw->ss);
 }
 
-static void view_close_cb(GtkWidget *UNUSED(widget), gpointer data)
+static void view_close_cb(GtkWidget *, gpointer data)
 {
-       ViewWindow *vw = data;
+       auto vw = static_cast<ViewWindow *>(data);
 
        view_window_close(vw);
 }
@@ -1305,16 +1326,16 @@ static LayoutWindow *view_new_layout_with_fd(FileData *fd)
 {
        LayoutWindow *nw;
 
-       nw = layout_new(NULL, NULL);
-       layout_sort_set(nw, options->file_sort.method, options->file_sort.ascending);
+       nw = layout_new(nullptr, nullptr);
+       layout_sort_set_files(nw, nw->options.file_view_list_sort.method, nw->options.file_view_list_sort.ascend, nw->options.file_view_list_sort.case_sensitive);
        layout_set_fd(nw, fd);
        return nw;
 }
 
 
-static void view_set_layout_path_cb(GtkWidget *UNUSED(widget), gpointer data)
+static void view_set_layout_path_cb(GtkWidget *, gpointer data)
 {
-       ViewWindow *vw = data;
+       auto vw = static_cast<ViewWindow *>(data);
        LayoutWindow *lw;
        ImageWindow *imd;
 
@@ -1330,22 +1351,22 @@ static void view_set_layout_path_cb(GtkWidget *UNUSED(widget), gpointer data)
        view_window_close(vw);
 }
 
-static void view_popup_menu_destroy_cb(GtkWidget *UNUSED(widget), gpointer data)
+static void view_popup_menu_destroy_cb(GtkWidget *, gpointer data)
 {
-       GList *editmenu_fd_list = data;
+       auto editmenu_fd_list = static_cast<GList *>(data);
 
        filelist_free(editmenu_fd_list);
 }
 
 static GList *view_window_get_fd_list(ViewWindow *vw)
 {
-       GList *list = NULL;
+       GList *list = nullptr;
        ImageWindow *imd = view_window_active_image(vw);
 
        if (imd)
                {
                FileData *fd = image_get_fd(imd);
-               if (fd) list = g_list_append(NULL, file_data_ref(fd));
+               if (fd) list = g_list_append(nullptr, file_data_ref(fd));
                }
 
        return list;
@@ -1353,19 +1374,19 @@ static GList *view_window_get_fd_list(ViewWindow *vw)
 
 /**
  * @brief Add file selection list to a collection
- * @param[in] widget 
+ * @param[in] widget
  * @param[in] data Index to the collection list menu item selected, or -1 for new collection
- * 
- * 
+ *
+ *
  */
 static void image_pop_menu_collections_cb(GtkWidget *widget, gpointer data)
 {
        ViewWindow *vw;
        ImageWindow *imd;
        FileData *fd;
-       GList *selection_list = NULL;
+       GList *selection_list = nullptr;
 
-       vw = submenu_item_get_data(widget);
+       vw = static_cast<ViewWindow *>(submenu_item_get_data(widget));
        imd = view_window_active_image(vw);
        fd = image_get_fd(imd);
        selection_list = g_list_append(selection_list, fd);
@@ -1389,38 +1410,38 @@ static GtkWidget *view_popup_menu(ViewWindow *vw)
        g_object_set_data(G_OBJECT(menu), "window_keys", image_window_keys);
        g_object_set_data(G_OBJECT(menu), "accel_group", accel_group);
 
-       menu_item_add_stock(menu, _("Zoom _in"), GTK_STOCK_ZOOM_IN, G_CALLBACK(view_zoom_in_cb), vw);
-       menu_item_add_stock(menu, _("Zoom _out"), GTK_STOCK_ZOOM_OUT, G_CALLBACK(view_zoom_out_cb), vw);
-       menu_item_add_stock(menu, _("Zoom _1:1"), GTK_STOCK_ZOOM_100, G_CALLBACK(view_zoom_1_1_cb), vw);
-       menu_item_add_stock(menu, _("Zoom to fit"), GTK_STOCK_ZOOM_FIT, G_CALLBACK(view_zoom_fit_cb), vw);
+       menu_item_add_icon(menu, _("Zoom _in"), GQ_ICON_ZOOM_IN, G_CALLBACK(view_zoom_in_cb), vw);
+       menu_item_add_icon(menu, _("Zoom _out"), GQ_ICON_ZOOM_OUT, G_CALLBACK(view_zoom_out_cb), vw);
+       menu_item_add_icon(menu, _("Zoom _1:1"), GQ_ICON_ZOOM_100, G_CALLBACK(view_zoom_1_1_cb), vw);
+       menu_item_add_icon(menu, _("Zoom to fit"), GQ_ICON_ZOOM_FIT, G_CALLBACK(view_zoom_fit_cb), vw);
        menu_item_add_divider(menu);
 
        editmenu_fd_list = view_window_get_fd_list(vw);
        g_signal_connect(G_OBJECT(menu), "destroy",
                         G_CALLBACK(view_popup_menu_destroy_cb), editmenu_fd_list);
-       item = submenu_add_edit(menu, NULL, G_CALLBACK(view_edit_cb), vw, editmenu_fd_list);
+       item = submenu_add_edit(menu, nullptr, G_CALLBACK(view_edit_cb), vw, editmenu_fd_list);
        menu_item_add_divider(item);
 
        submenu_add_alter(menu, G_CALLBACK(view_alter_cb), vw);
 
-       menu_item_add_stock(menu, _("View in _new window"), GTK_STOCK_NEW, G_CALLBACK(view_new_window_cb), vw);
+       menu_item_add_icon(menu, _("View in _new window"), GQ_ICON_NEW, G_CALLBACK(view_new_window_cb), vw);
        item = menu_item_add(menu, _("_Go to directory view"), G_CALLBACK(view_set_layout_path_cb), vw);
 
        menu_item_add_divider(menu);
-       menu_item_add_stock(menu, _("_Copy..."), GTK_STOCK_COPY, G_CALLBACK(view_copy_cb), vw);
+       menu_item_add_icon(menu, _("_Copy..."), GQ_ICON_COPY, G_CALLBACK(view_copy_cb), vw);
        menu_item_add(menu, _("_Move..."), G_CALLBACK(view_move_cb), vw);
        menu_item_add(menu, _("_Rename..."), G_CALLBACK(view_rename_cb), vw);
        menu_item_add(menu, _("_Copy path"), G_CALLBACK(view_copy_path_cb), vw);
        menu_item_add(menu, _("_Copy path unquoted"), G_CALLBACK(view_copy_path_unquoted_cb), vw);
 
        menu_item_add_divider(menu);
-       menu_item_add_stock(menu,
+       menu_item_add_icon(menu,
                                options->file_ops.confirm_move_to_trash ? _("Move to Trash...") :
-                                       _("Move to Trash"), PIXBUF_INLINE_ICON_TRASH,
+                                       _("Move to Trash"), GQ_ICON_DELETE,
                                G_CALLBACK(view_move_to_trash_cb), vw);
-       menu_item_add_stock(menu,
+       menu_item_add_icon(menu,
                                options->file_ops.confirm_delete ? _("_Delete...") :
-                                       _("_Delete"), GTK_STOCK_DELETE,
+                                       _("_Delete"), GQ_ICON_DELETE_SHRED,
                                G_CALLBACK(view_delete_cb), vw);
 
        menu_item_add_divider(menu);
@@ -1447,22 +1468,22 @@ static GtkWidget *view_popup_menu(ViewWindow *vw)
        else
                {
                item = menu_item_add(menu, _("Toggle _slideshow"), G_CALLBACK(view_slideshow_start_cb), vw);
-               gtk_widget_set_sensitive(item, (vw->list != NULL) || view_window_contains_collection(vw));
+               gtk_widget_set_sensitive(item, (vw->list != nullptr) || view_window_contains_collection(vw));
                item = menu_item_add(menu, _("Pause slides_how"), G_CALLBACK(view_slideshow_pause_cb), vw);
                gtk_widget_set_sensitive(item, FALSE);
                }
 
        if (vw->fs)
                {
-               menu_item_add(menu, _("Exit _full screen"), G_CALLBACK(view_fullscreen_cb), vw);
+               menu_item_add_icon(menu, _("Exit _full screen"), GQ_ICON_LEAVE_FULLSCREEN, G_CALLBACK(view_fullscreen_cb), vw);
                }
        else
                {
-               menu_item_add(menu, _("_Full screen"), G_CALLBACK(view_fullscreen_cb), vw);
+               menu_item_add_icon(menu, _("_Full screen"), GQ_ICON_FULLSCREEN, G_CALLBACK(view_fullscreen_cb), vw);
                }
 
        menu_item_add_divider(menu);
-       menu_item_add_stock(menu, _("C_lose window"), GTK_STOCK_CLOSE, G_CALLBACK(view_close_cb), vw);
+       menu_item_add_icon(menu, _("C_lose window"), GQ_ICON_CLOSE, G_CALLBACK(view_close_cb), vw);
 
        return menu;
 }
@@ -1473,12 +1494,12 @@ static GtkWidget *view_popup_menu(ViewWindow *vw)
  *-------------------------------------------------------------------
  */
 
-typedef struct {
+struct CViewConfirmD {
        ViewWindow *vw;
        GList *list;
-} CViewConfirmD;
+};
 
-static void view_dir_list_cancel(GtkWidget *UNUSED(widget), gpointer UNUSED(data))
+static void view_dir_list_cancel(GtkWidget *, gpointer)
 {
        /* do nothing */
 }
@@ -1487,19 +1508,19 @@ static void view_dir_list_do(ViewWindow *vw, GList *list, gboolean skip, gboolea
 {
        GList *work;
 
-       view_window_set_list(vw, NULL);
+       view_window_set_list(vw, nullptr);
 
        work = list;
        while (work)
                {
-               FileData *fd = work->data;
+               auto fd = static_cast<FileData *>(work->data);
                work = work->next;
 
                if (isdir(fd->path))
                        {
                        if (!skip)
                                {
-                               GList *list = NULL;
+                               GList *list = nullptr;
 
                                if (recurse)
                                        {
@@ -1507,7 +1528,7 @@ static void view_dir_list_do(ViewWindow *vw, GList *list, gboolean skip, gboolea
                                        }
                                else
                                        { /** @FIXME ?? */
-                                       filelist_read(fd, &list, NULL);
+                                       filelist_read(fd, &list, nullptr);
                                        list = filelist_sort_path(list);
                                        list = filelist_filter(list, FALSE);
                                        }
@@ -1526,43 +1547,43 @@ static void view_dir_list_do(ViewWindow *vw, GList *list, gboolean skip, gboolea
                FileData *fd;
 
                vw->list_pointer = vw->list;
-               fd = vw->list->data;
+               fd = static_cast<FileData *>(vw->list->data);
                image_change_fd(vw->imd, fd, image_zoom_get_default(vw->imd));
 
                work = vw->list->next;
                if (options->image.enable_read_ahead && work)
                        {
-                       fd = work->data;
+                       fd = static_cast<FileData *>(work->data);
                        image_prebuffer_set(vw->imd, fd);
                        }
                }
        else
                {
-               image_change_fd(vw->imd, NULL, image_zoom_get_default(vw->imd));
+               image_change_fd(vw->imd, nullptr, image_zoom_get_default(vw->imd));
                }
 }
 
-static void view_dir_list_add(GtkWidget *UNUSED(widget), gpointer data)
+static void view_dir_list_add(GtkWidget *, gpointer data)
 {
-       CViewConfirmD *d = data;
+       auto d = static_cast<CViewConfirmD *>(data);
        view_dir_list_do(d->vw, d->list, FALSE, FALSE);
 }
 
-static void view_dir_list_recurse(GtkWidget *UNUSED(widget), gpointer data)
+static void view_dir_list_recurse(GtkWidget *, gpointer data)
 {
-       CViewConfirmD *d = data;
+       auto d = static_cast<CViewConfirmD *>(data);
        view_dir_list_do(d->vw, d->list, FALSE, TRUE);
 }
 
-static void view_dir_list_skip(GtkWidget *UNUSED(widget), gpointer data)
+static void view_dir_list_skip(GtkWidget *, gpointer data)
 {
-       CViewConfirmD *d = data;
+       auto d = static_cast<CViewConfirmD *>(data);
        view_dir_list_do(d->vw, d->list, TRUE, FALSE);
 }
 
-static void view_dir_list_destroy(GtkWidget *UNUSED(widget), gpointer data)
+static void view_dir_list_destroy(GtkWidget *, gpointer data)
 {
-       CViewConfirmD *d = data;
+       auto d = static_cast<CViewConfirmD *>(data);
        filelist_free(d->list);
        g_free(d);
 }
@@ -1580,13 +1601,13 @@ static GtkWidget *view_confirm_dir_list(ViewWindow *vw, GList *list)
        g_signal_connect(G_OBJECT(menu), "destroy",
                         G_CALLBACK(view_dir_list_destroy), d);
 
-       menu_item_add_stock(menu, _("Dropped list includes folders."), GTK_STOCK_DND_MULTIPLE, NULL, NULL);
+       menu_item_add_stock(menu, _("Dropped list includes folders."), GQ_ICON_DND, nullptr, nullptr);
        menu_item_add_divider(menu);
-       menu_item_add_stock(menu, _("_Add contents"), GTK_STOCK_OK, G_CALLBACK(view_dir_list_add), d);
-       menu_item_add_stock(menu, _("Add contents _recursive"), GTK_STOCK_ADD, G_CALLBACK(view_dir_list_recurse), d);
-       menu_item_add_stock(menu, _("_Skip folders"), GTK_STOCK_REMOVE, G_CALLBACK(view_dir_list_skip), d);
+       menu_item_add_icon(menu, _("_Add contents"), GQ_ICON_OK, G_CALLBACK(view_dir_list_add), d);
+       menu_item_add_icon(menu, _("Add contents _recursive"), GQ_ICON_ADD, G_CALLBACK(view_dir_list_recurse), d);
+       menu_item_add_icon(menu, _("_Skip folders"), GQ_ICON_REMOVE, G_CALLBACK(view_dir_list_skip), d);
        menu_item_add_divider(menu);
-       menu_item_add_stock(menu, _("Cancel"), GTK_STOCK_CANCEL, G_CALLBACK(view_dir_list_cancel), d);
+       menu_item_add_icon(menu, _("Cancel"), GQ_ICON_CANCEL, G_CALLBACK(view_dir_list_cancel), d);
 
        return menu;
 }
@@ -1597,12 +1618,12 @@ static GtkWidget *view_confirm_dir_list(ViewWindow *vw, GList *list)
  *-----------------------------------------------------------------------------
  */
 
-static void view_window_get_dnd_data(GtkWidget *UNUSED(widget), GdkDragContext *context,
-                                    gint UNUSED(x), gint UNUSED(y),
+static void view_window_get_dnd_data(GtkWidget *, GdkDragContext *context,
+                                    gint, gint,
                                     GtkSelectionData *selection_data, guint info,
-                                    guint UNUSED(time), gpointer data)
+                                    guint, gpointer data)
 {
-       ViewWindow *vw = data;
+       auto vw = static_cast<ViewWindow *>(data);
        ImageWindow *imd;
 
        if (gtk_drag_get_source_widget(context) == vw->imd->pr) return;
@@ -1624,12 +1645,12 @@ static void view_window_get_dnd_data(GtkWidget *UNUSED(widget), GdkDragContext *
                        work = list;
                        while (work)
                                {
-                               FileData *fd = work->data;
+                               auto fd = static_cast<FileData *>(work->data);
                                if (isdir(fd->path))
                                        {
                                        GtkWidget *menu;
                                        menu = view_confirm_dir_list(vw, list);
-                                       gtk_menu_popup_at_pointer(GTK_MENU(menu), NULL);
+                                       gtk_menu_popup_at_pointer(GTK_MENU(menu), nullptr);
                                        return;
                                        }
                                work = work->next;
@@ -1637,34 +1658,34 @@ static void view_window_get_dnd_data(GtkWidget *UNUSED(widget), GdkDragContext *
 
                        list = filelist_filter(list, FALSE);
 
-                       source = NULL;
-                       info_list = NULL;
+                       source = nullptr;
+                       info_list = nullptr;
                        }
                else
                        {
-                       source = collection_from_dnd_data((gchar *)gtk_selection_data_get_data(selection_data), &list, &info_list);
+                       source = collection_from_dnd_data(reinterpret_cast<const gchar *>(gtk_selection_data_get_data(selection_data)), &list, &info_list);
                        }
 
                if (list)
                        {
                        FileData *fd;
 
-                       fd = list->data;
+                       fd = static_cast<FileData *>(list->data);
                        if (isfile(fd->path))
                                {
                                view_slideshow_stop(vw);
-                               view_window_set_list(vw, NULL);
+                               view_window_set_list(vw, nullptr);
 
                                if (source && info_list)
                                        {
-                                       image_change_from_collection(imd, source, info_list->data, image_zoom_get_default(imd));
+                                       image_change_from_collection(imd, source, static_cast<CollectInfo *>(info_list->data), image_zoom_get_default(imd));
                                        }
                                else
                                        {
                                        if (list->next)
                                                {
                                                vw->list = list;
-                                               list = NULL;
+                                               list = nullptr;
 
                                                vw->list_pointer = vw->list;
                                                }
@@ -1677,11 +1698,11 @@ static void view_window_get_dnd_data(GtkWidget *UNUSED(widget), GdkDragContext *
                }
 }
 
-static void view_window_set_dnd_data(GtkWidget *UNUSED(widget), GdkDragContext *UNUSED(context),
-                                    GtkSelectionData *selection_data, guint UNUSED(info),
-                                    guint UNUSED(time), gpointer data)
+static void view_window_set_dnd_data(GtkWidget *, GdkDragContext *,
+                                    GtkSelectionData *selection_data, guint,
+                                    guint, gpointer data)
 {
-       ViewWindow *vw = data;
+       auto vw = static_cast<ViewWindow *>(data);
        FileData *fd;
 
        fd = image_get_fd(vw->imd);
@@ -1690,14 +1711,14 @@ static void view_window_set_dnd_data(GtkWidget *UNUSED(widget), GdkDragContext *
                {
                GList *list;
 
-               list = g_list_append(NULL, fd);
+               list = g_list_append(nullptr, fd);
                uri_selection_data_set_uris_from_filelist(selection_data, list);
                g_list_free(list);
                }
        else
                {
                gtk_selection_data_set(selection_data, gtk_selection_data_get_target(selection_data),
-                                      8, NULL, 0);
+                                      8, nullptr, 0);
                }
 }
 
@@ -1709,14 +1730,14 @@ static void view_window_dnd_init(ViewWindow *vw)
 
        gtk_drag_source_set(imd->pr, GDK_BUTTON2_MASK,
                            dnd_file_drag_types, dnd_file_drag_types_count,
-                           GDK_ACTION_COPY | GDK_ACTION_MOVE | GDK_ACTION_LINK);
+                           static_cast<GdkDragAction>(GDK_ACTION_COPY | GDK_ACTION_MOVE | GDK_ACTION_LINK));
        g_signal_connect(G_OBJECT(imd->pr), "drag_data_get",
                         G_CALLBACK(view_window_set_dnd_data), vw);
 
        gtk_drag_dest_set(imd->pr,
-                         GTK_DEST_DEFAULT_MOTION | GTK_DEST_DEFAULT_DROP,
+                         static_cast<GtkDestDefaults>(GTK_DEST_DEFAULT_MOTION | GTK_DEST_DEFAULT_DROP),
                          dnd_file_drop_types, dnd_file_drop_types_count,
-                         GDK_ACTION_COPY | GDK_ACTION_MOVE | GDK_ACTION_LINK);
+                         static_cast<GdkDragAction>(GDK_ACTION_COPY | GDK_ACTION_MOVE | GDK_ACTION_LINK));
        g_signal_connect(G_OBJECT(imd->pr), "drag_data_received",
                         G_CALLBACK(view_window_get_dnd_data), vw);
 }
@@ -1755,7 +1776,7 @@ static void view_real_removed(ViewWindow *vw, FileData *fd)
                        }
                if (image_get_fd(imd) == image_fd)
                        {
-                       image_change_fd(imd, NULL, image_zoom_get_default(imd));
+                       image_change_fd(imd, nullptr, image_zoom_get_default(imd));
                        }
                }
 
@@ -1772,7 +1793,7 @@ static void view_real_removed(ViewWindow *vw, FileData *fd)
                        FileData *chk_fd;
                        GList *chk_link;
 
-                       chk_fd = work->data;
+                       chk_fd = static_cast<FileData *>(work->data);
                        chk_link = work;
                        work = work->next;
 
@@ -1794,11 +1815,11 @@ static void view_real_removed(ViewWindow *vw, FileData *fd)
 
                        if (vw->list_pointer)
                                {
-                               fd = vw->list_pointer->data;
+                               fd = static_cast<FileData *>(vw->list_pointer->data);
                                }
                        else
                                {
-                               fd = NULL;
+                               fd = nullptr;
                                }
 
                        image_change_fd(imd, fd, image_zoom_get_default(imd));
@@ -1810,7 +1831,7 @@ static void view_real_removed(ViewWindow *vw, FileData *fd)
 
 static void view_window_notify_cb(FileData *fd, NotifyType type, gpointer data)
 {
-       ViewWindow *vw = data;
+       auto vw = static_cast<ViewWindow *>(data);
 
        if (!(type & NOTIFY_CHANGE) || !fd->change) return;