* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
-#include "main.h"
#include "layout-image.h"
+#include <cstring>
+
+#include <gdk-pixbuf/gdk-pixbuf.h>
+#include <gdk/gdk.h>
+#include <gio/gio.h>
+#include <glib-object.h>
+#include <pango/pango.h>
+
+#include <config.h>
+
+#include "archives.h"
#include "collect.h"
+#include "debug.h"
#include "dnd.h"
#include "editors.h"
#include "exif.h"
#include "filedata.h"
#include "fullscreen.h"
#include "history-list.h"
-#include "image.h"
#include "image-overlay.h"
+#include "image.h"
#include "img-view.h"
+#include "intl.h"
#include "layout-util.h"
+#include "layout.h"
+#include "main-defines.h"
#include "menu.h"
#include "metadata.h"
#include "misc.h"
-#include "pixbuf-util.h"
+#include "options.h"
#include "pixbuf-renderer.h"
#include "slideshow.h"
#include "ui-fileops.h"
#include "ui-menu.h"
+#include "ui-utildlg.h"
#include "uri-utils.h"
#include "utilops.h"
#include "view-file.h"
-#define FILE_COLUMN_POINTER 0
+enum {
+ FILE_COLUMN_POINTER = 0
+};
static GtkWidget *layout_image_pop_menu(LayoutWindow *lw);
static void layout_image_set_buttons(LayoutWindow *lw);
* full screen overlay
*----------------------------------------------------------------------------
*/
-
-//void layout_image_overlay_toggle(LayoutWindow *lw)
-//{
- //if (!lw) return;
- //image_osd_toggle(lw->image);
-//}
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wunused-function"
+static void layout_image_overlay_toggle_unused(LayoutWindow *lw)
+{
+ if (!lw) return;
+ image_osd_toggle(lw->image);
+}
+#pragma GCC diagnostic pop
/*
*----------------------------------------------------------------------------
static void layout_image_full_screen_stop_func(FullScreenData *fs, gpointer data)
{
- LayoutWindow *lw = static_cast<LayoutWindow *>(data);
+ auto lw = static_cast<LayoutWindow *>(data);
/* restore image window */
if (lw->image == fs->imd)
lw->image = fs->normal_imd;
- lw->full_screen = NULL;
+ lw->full_screen = nullptr;
}
void layout_image_full_screen_start(LayoutWindow *lw)
{
if (!layout_valid(&lw)) return FALSE;
- return (lw->full_screen != NULL);
+ return (lw->full_screen != nullptr);
}
/*
if (lw->slideshow) slideshow_prev(lw->slideshow);
}
-static void layout_image_slideshow_stop_func(SlideShowData *UNUSED(ss), gpointer data)
+static void layout_image_slideshow_stop_func(SlideShowData *, gpointer data)
{
- LayoutWindow *lw = static_cast<LayoutWindow *>(data);
+ auto lw = static_cast<LayoutWindow *>(data);
- lw->slideshow = NULL;
- layout_status_update_info(lw, NULL);
+ lw->slideshow = nullptr;
+ layout_status_update_info(lw, nullptr);
}
void layout_image_slideshow_start(LayoutWindow *lw)
if (cd && info)
{
- lw->slideshow = slideshow_start_from_collection(lw, NULL, cd,
+ lw->slideshow = slideshow_start_from_collection(lw, nullptr, cd,
layout_image_slideshow_stop_func, lw, info);
}
else
layout_image_slideshow_stop_func, lw);
}
- layout_status_update_info(lw, NULL);
+ layout_status_update_info(lw, nullptr);
}
/* note that slideshow will take ownership of the list, do not free it */
return;
}
- lw->slideshow = slideshow_start_from_filelist(lw, NULL, list,
+ lw->slideshow = slideshow_start_from_filelist(lw, nullptr, list,
layout_image_slideshow_stop_func, lw);
- layout_status_update_info(lw, NULL);
+ layout_status_update_info(lw, nullptr);
}
void layout_image_slideshow_stop(LayoutWindow *lw)
{
if (!layout_valid(&lw)) return FALSE;
- return (lw->slideshow != NULL);
+ return (lw->slideshow != nullptr);
}
gboolean layout_image_slideshow_pause_toggle(LayoutWindow *lw)
ret = slideshow_pause_toggle(lw->slideshow);
- layout_status_update_info(lw, NULL);
+ layout_status_update_info(lw, nullptr);
return ret;
}
*----------------------------------------------------------------------------
*/
+struct AnimationData
+{
+ ImageWindow *iw;
+ LayoutWindow *lw;
+ GdkPixbufAnimation *gpa;
+ GdkPixbufAnimationIter *iter;
+ GdkPixbuf *gpb;
+ FileData *data_adr;
+ gint delay;
+ gboolean valid;
+ GCancellable *cancellable;
+ GFile *in_file;
+ GFileInputStream *gfstream;
+};
+
static void image_animation_data_free(AnimationData *fd)
{
if(!fd) return;
static gboolean show_next_frame(gpointer data)
{
- AnimationData *fd = (AnimationData*)data;
+ auto fd = static_cast<AnimationData*>(data);
int delay;
PixbufRenderer *pr;
return FALSE;
}
- pr = (PixbufRenderer*)fd->iw->pr;
+ pr = reinterpret_cast<PixbufRenderer*>(fd->iw->pr);
- if (gdk_pixbuf_animation_iter_advance(fd->iter,NULL)==FALSE)
+ if (gdk_pixbuf_animation_iter_advance(fd->iter,nullptr)==FALSE)
{
/* This indicates the animation is complete.
Return FALSE here to disable looping. */
{
if (!layout_valid(&lw)) return FALSE;
- if(!lw->options.animate || lw->image->image_fd == NULL || lw->image->image_fd->extension == NULL || (g_ascii_strcasecmp(lw->image->image_fd->extension,".GIF")!=0 && g_ascii_strcasecmp(lw->image->image_fd->extension,".WEBP")!=0))
+ if(!lw->options.animate || lw->image->image_fd == nullptr || lw->image->image_fd->extension == nullptr || (g_ascii_strcasecmp(lw->image->image_fd->extension,".GIF")!=0 && g_ascii_strcasecmp(lw->image->image_fd->extension,".WEBP")!=0))
{
if(lw->animation)
{
{
g_cancellable_cancel(lw->animation->cancellable);
}
- lw->animation = NULL;
+ lw->animation = nullptr;
}
return FALSE;
}
}
-static void animation_async_ready_cb(GObject *UNUSED(source_object), GAsyncResult *res, gpointer data)
+static void animation_async_ready_cb(GObject *, GAsyncResult *res, gpointer data)
{
- GError *error = NULL;
- AnimationData *animation = static_cast<AnimationData *>(data);
+ GError *error = nullptr;
+ auto animation = static_cast<AnimationData *>(data);
if (animation)
{
if (g_cancellable_is_cancelled(animation->cancellable))
{
- gdk_pixbuf_animation_new_from_stream_finish(res, NULL);
+ gdk_pixbuf_animation_new_from_stream_finish(res, nullptr);
g_object_unref(animation->in_file);
g_object_unref(animation->gfstream);
image_animation_data_free(animation);
{
if (!gdk_pixbuf_animation_is_static_image(animation->gpa))
{
- animation->iter = gdk_pixbuf_animation_get_iter(animation->gpa, NULL);
+ animation->iter = gdk_pixbuf_animation_get_iter(animation->gpa, nullptr);
if (animation->iter)
{
animation->data_adr = animation->lw->image->image_fd;
static gboolean layout_image_animate_new_file(LayoutWindow *lw)
{
GFileInputStream *gfstream;
- GError *error = NULL;
+ GError *error = nullptr;
AnimationData *animation;
GFile *in_file;
in_file = g_file_new_for_path(lw->image->image_fd->path);
animation->in_file = in_file;
- gfstream = g_file_read(in_file, NULL, &error);
+ gfstream = g_file_read(in_file, nullptr, &error);
if (gfstream)
{
animation->gfstream = gfstream;
- gdk_pixbuf_animation_new_from_stream_async((GInputStream*)gfstream, animation->cancellable, animation_async_ready_cb, animation);
+ gdk_pixbuf_animation_new_from_stream_async(reinterpret_cast<GInputStream*>(gfstream), animation->cancellable, animation_async_ready_cb, animation);
}
else
{
*----------------------------------------------------------------------------
*/
-static void li_pop_menu_zoom_in_cb(GtkWidget *UNUSED(widget), gpointer data)
+static void li_pop_menu_zoom_in_cb(GtkWidget *, gpointer data)
{
- LayoutWindow *lw = static_cast<LayoutWindow *>(data);
+ auto lw = static_cast<LayoutWindow *>(data);
layout_image_zoom_adjust(lw, get_zoom_increment(), FALSE);
}
-static void li_pop_menu_zoom_out_cb(GtkWidget *UNUSED(widget), gpointer data)
+static void li_pop_menu_zoom_out_cb(GtkWidget *, gpointer data)
{
- LayoutWindow *lw = static_cast<LayoutWindow *>(data);
+ auto lw = static_cast<LayoutWindow *>(data);
layout_image_zoom_adjust(lw, -get_zoom_increment(), FALSE);
}
-static void li_pop_menu_zoom_1_1_cb(GtkWidget *UNUSED(widget), gpointer data)
+static void li_pop_menu_zoom_1_1_cb(GtkWidget *, gpointer data)
{
- LayoutWindow *lw = static_cast<LayoutWindow *>(data);
+ auto lw = static_cast<LayoutWindow *>(data);
layout_image_zoom_set(lw, 1.0, FALSE);
}
-static void li_pop_menu_zoom_fit_cb(GtkWidget *UNUSED(widget), gpointer data)
+static void li_pop_menu_zoom_fit_cb(GtkWidget *, gpointer data)
{
- LayoutWindow *lw = static_cast<LayoutWindow *>(data);
+ auto lw = static_cast<LayoutWindow *>(data);
layout_image_zoom_set(lw, 0.0, FALSE);
}
static void li_pop_menu_edit_cb(GtkWidget *widget, gpointer data)
{
LayoutWindow *lw;
- const gchar *key = static_cast<const gchar *>(data);
+ auto key = static_cast<const gchar *>(data);
lw = static_cast<LayoutWindow *>(submenu_item_get_data(widget));
static void li_pop_menu_alter_cb(GtkWidget *widget, gpointer data)
{
- LayoutWindow *lw = static_cast<LayoutWindow *>(data);
+ auto lw = static_cast<LayoutWindow *>(data);
AlterType type;
lw = static_cast<LayoutWindow *>(submenu_item_get_data(widget));
- type = (AlterType)GPOINTER_TO_INT(data);
+ type = static_cast<AlterType>GPOINTER_TO_INT(data);
image_alter_orientation(lw->image, lw->image->image_fd, type);
}
-static void li_pop_menu_new_cb(GtkWidget *UNUSED(widget), gpointer data)
+static void li_pop_menu_new_cb(GtkWidget *, gpointer data)
{
- LayoutWindow *lw = static_cast<LayoutWindow *>(data);
+ auto lw = static_cast<LayoutWindow *>(data);
view_window_new(layout_image_get_fd(lw));
}
GtkWidget *parent;
menu = gtk_widget_get_toplevel(widget);
- if (!menu) return NULL;
+ if (!menu) return nullptr;
parent = static_cast<GtkWidget *>(g_object_get_data(G_OBJECT(menu), "click_parent"));
static void li_pop_menu_copy_cb(GtkWidget *widget, gpointer data)
{
- LayoutWindow *lw = static_cast<LayoutWindow *>(data);
+ auto lw = static_cast<LayoutWindow *>(data);
- file_util_copy(layout_image_get_fd(lw), NULL, NULL,
+ file_util_copy(layout_image_get_fd(lw), nullptr, nullptr,
li_pop_menu_click_parent(widget, lw));
}
-static void li_pop_menu_copy_path_cb(GtkWidget *UNUSED(widget), gpointer data)
+static void li_pop_menu_copy_path_cb(GtkWidget *, gpointer data)
{
- LayoutWindow *lw = static_cast<LayoutWindow *>(data);
+ auto lw = static_cast<LayoutWindow *>(data);
file_util_copy_path_to_clipboard(layout_image_get_fd(lw), TRUE);
}
-static void li_pop_menu_copy_path_unquoted_cb(GtkWidget *UNUSED(widget), gpointer data)
+static void li_pop_menu_copy_path_unquoted_cb(GtkWidget *, gpointer data)
{
- LayoutWindow *lw = static_cast<LayoutWindow *>(data);
+ auto lw = static_cast<LayoutWindow *>(data);
file_util_copy_path_to_clipboard(layout_image_get_fd(lw), FALSE);
}
-static void li_pop_menu_copy_image_cb(GtkWidget *UNUSED(widget), gpointer data)
+#if HAVE_GTK4
+static void li_pop_menu_copy_image_cb(GtkWidget *, gpointer data)
+{
+/* @FIXME GTK4 stub */
+}
+#else
+static void li_pop_menu_copy_image_cb(GtkWidget *, gpointer data)
{
- LayoutWindow *lw = static_cast<LayoutWindow *>(data);
+ auto lw = static_cast<LayoutWindow *>(data);
ImageWindow *imd = lw->image;
GdkPixbuf *pixbuf;
if (!pixbuf) return;
gtk_clipboard_set_image(gtk_clipboard_get(GDK_SELECTION_CLIPBOARD), pixbuf);
}
+#endif
static void li_pop_menu_move_cb(GtkWidget *widget, gpointer data)
{
- LayoutWindow *lw = static_cast<LayoutWindow *>(data);
+ auto lw = static_cast<LayoutWindow *>(data);
- file_util_move(layout_image_get_fd(lw), NULL, NULL,
+ file_util_move(layout_image_get_fd(lw), nullptr, nullptr,
li_pop_menu_click_parent(widget, lw));
}
static void li_pop_menu_rename_cb(GtkWidget *widget, gpointer data)
{
- LayoutWindow *lw = static_cast<LayoutWindow *>(data);
+ auto lw = static_cast<LayoutWindow *>(data);
- file_util_rename(layout_image_get_fd(lw), NULL,
+ file_util_rename(layout_image_get_fd(lw), nullptr,
li_pop_menu_click_parent(widget, lw));
}
static void li_pop_menu_delete_cb(GtkWidget *widget, gpointer data)
{
- LayoutWindow *lw = static_cast<LayoutWindow *>(data);
+ auto lw = static_cast<LayoutWindow *>(data);
options->file_ops.safe_delete_enable = FALSE;
- file_util_delete(layout_image_get_fd(lw), NULL,
+ file_util_delete(layout_image_get_fd(lw), nullptr,
li_pop_menu_click_parent(widget, lw));
}
static void li_pop_menu_move_to_trash_cb(GtkWidget *widget, gpointer data)
{
- LayoutWindow *lw = static_cast<LayoutWindow *>(data);
+ auto lw = static_cast<LayoutWindow *>(data);
options->file_ops.safe_delete_enable = TRUE;
- file_util_delete(layout_image_get_fd(lw), NULL,
+ file_util_delete(layout_image_get_fd(lw), nullptr,
li_pop_menu_click_parent(widget, lw));
}
-static void li_pop_menu_slide_start_cb(GtkWidget *UNUSED(widget), gpointer data)
+static void li_pop_menu_slide_start_cb(GtkWidget *, gpointer data)
{
- LayoutWindow *lw = static_cast<LayoutWindow *>(data);
+ auto lw = static_cast<LayoutWindow *>(data);
layout_image_slideshow_start(lw);
}
-static void li_pop_menu_slide_stop_cb(GtkWidget *UNUSED(widget), gpointer data)
+static void li_pop_menu_slide_stop_cb(GtkWidget *, gpointer data)
{
- LayoutWindow *lw = static_cast<LayoutWindow *>(data);
+ auto lw = static_cast<LayoutWindow *>(data);
layout_image_slideshow_stop(lw);
}
-static void li_pop_menu_slide_pause_cb(GtkWidget *UNUSED(widget), gpointer data)
+static void li_pop_menu_slide_pause_cb(GtkWidget *, gpointer data)
{
- LayoutWindow *lw = static_cast<LayoutWindow *>(data);
+ auto lw = static_cast<LayoutWindow *>(data);
layout_image_slideshow_pause_toggle(lw);
}
-static void li_pop_menu_full_screen_cb(GtkWidget *UNUSED(widget), gpointer data)
+static void li_pop_menu_full_screen_cb(GtkWidget *, gpointer data)
{
- LayoutWindow *lw = static_cast<LayoutWindow *>(data);
+ auto lw = static_cast<LayoutWindow *>(data);
layout_image_full_screen_toggle(lw);
}
-static void li_pop_menu_animate_cb(GtkWidget *UNUSED(widget), gpointer data)
+static void li_pop_menu_animate_cb(GtkWidget *, gpointer data)
{
- LayoutWindow *lw = static_cast<LayoutWindow *>(data);
+ auto lw = static_cast<LayoutWindow *>(data);
layout_image_animate_toggle(lw);
}
-static void li_pop_menu_hide_cb(GtkWidget *UNUSED(widget), gpointer data)
+static void li_pop_menu_hide_cb(GtkWidget *, gpointer data)
{
- LayoutWindow *lw = static_cast<LayoutWindow *>(data);
+ auto lw = static_cast<LayoutWindow *>(data);
layout_tools_hide_toggle(lw);
}
-static void li_set_layout_path_cb(GtkWidget *UNUSED(widget), gpointer data)
+static void li_set_layout_path_cb(GtkWidget *, gpointer data)
{
- LayoutWindow *lw = static_cast<LayoutWindow *>(data);
+ auto lw = static_cast<LayoutWindow *>(data);
FileData *fd;
if (!layout_valid(&lw)) return;
if (fd) layout_set_fd(lw, fd);
}
-static void li_open_archive_cb(GtkWidget *UNUSED(widget), gpointer data)
+static void li_open_archive_cb(GtkWidget *, gpointer data)
{
- LayoutWindow *lw = static_cast<LayoutWindow *>(data);
+ auto lw = static_cast<LayoutWindow *>(data);
LayoutWindow *lw_new;
gchar *dest_dir;
}
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);
}
}
return ret;
}
-static void layout_image_popup_menu_destroy_cb(GtkWidget *UNUSED(widget), gpointer data)
+static void layout_image_popup_menu_destroy_cb(GtkWidget *, gpointer data)
{
- GList *editmenu_fd_list = static_cast<GList *>(data);
+ auto editmenu_fd_list = static_cast<GList *>(data);
filelist_free(editmenu_fd_list);
}
static GList *layout_image_get_fd_list(LayoutWindow *lw)
{
- GList *list = NULL;
+ GList *list = nullptr;
FileData *fd = layout_image_get_fd(lw);
if (fd)
/* optionally include sidecars if the filelist entry is not expanded */
list = vf_selection_get_one(lw->vf, fd);
else
- list = g_list_append(NULL, file_data_ref(fd));
+ list = g_list_append(nullptr, file_data_ref(fd));
}
return list;
/**
* @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 layout_pop_menu_collections_cb(GtkWidget *widget, gpointer data)
{
LayoutWindow *lw;
- GList *selection_list = NULL;
+ GList *selection_list = nullptr;
lw = static_cast<LayoutWindow *>(submenu_item_get_data(widget));
selection_list = g_list_append(selection_list, layout_image_get_fd(lw));
accel_group = gtk_accel_group_new();
gtk_menu_set_accel_group(GTK_MENU(menu), accel_group);
- g_object_set_data(G_OBJECT(menu), "window_keys", NULL);
+ g_object_set_data(G_OBJECT(menu), "window_keys", nullptr);
g_object_set_data(G_OBJECT(menu), "accel_group", accel_group);
- menu_item_add_stock(menu, _("Zoom _in"), GTK_STOCK_ZOOM_IN, G_CALLBACK(li_pop_menu_zoom_in_cb), lw);
- menu_item_add_stock(menu, _("Zoom _out"), GTK_STOCK_ZOOM_OUT, G_CALLBACK(li_pop_menu_zoom_out_cb), lw);
- menu_item_add_stock(menu, _("Zoom _1:1"), GTK_STOCK_ZOOM_100, G_CALLBACK(li_pop_menu_zoom_1_1_cb), lw);
- menu_item_add_stock(menu, _("Zoom to fit"), GTK_STOCK_ZOOM_FIT, G_CALLBACK(li_pop_menu_zoom_fit_cb), lw);
+ menu_item_add_icon(menu, _("Zoom _in"), GQ_ICON_ZOOM_IN, G_CALLBACK(li_pop_menu_zoom_in_cb), lw);
+ menu_item_add_icon(menu, _("Zoom _out"), GQ_ICON_ZOOM_OUT, G_CALLBACK(li_pop_menu_zoom_out_cb), lw);
+ menu_item_add_icon(menu, _("Zoom _1:1"), GQ_ICON_ZOOM_100, G_CALLBACK(li_pop_menu_zoom_1_1_cb), lw);
+ menu_item_add_icon(menu, _("Zoom to fit"), GQ_ICON_ZOOM_FIT, G_CALLBACK(li_pop_menu_zoom_fit_cb), lw);
menu_item_add_divider(menu);
editmenu_fd_list = layout_image_get_fd_list(lw);
menu_item_add_divider(submenu);
item = submenu_add_alter(menu, G_CALLBACK(li_pop_menu_alter_cb), lw);
- item = menu_item_add_stock(menu, _("View in _new window"), GTK_STOCK_NEW, G_CALLBACK(li_pop_menu_new_cb), lw);
+ item = menu_item_add_icon(menu, _("View in _new window"), GQ_ICON_NEW, G_CALLBACK(li_pop_menu_new_cb), lw);
if (!path || fullscreen) gtk_widget_set_sensitive(item, FALSE);
item = menu_item_add(menu, _("_Go to directory view"), G_CALLBACK(li_set_layout_path_cb), lw);
if (!path || li_check_if_current_path(lw, path)) gtk_widget_set_sensitive(item, FALSE);
- item = menu_item_add_stock(menu, _("Open archive"), GTK_STOCK_OPEN, G_CALLBACK(li_open_archive_cb), lw);
+ item = menu_item_add_icon(menu, _("Open archive"), GQ_ICON_OPEN, G_CALLBACK(li_open_archive_cb), lw);
if (!path || lw->image->image_fd->format_class != FORMAT_CLASS_ARCHIVE)
{
gtk_widget_set_sensitive(item, FALSE);
menu_item_add_divider(menu);
- item = menu_item_add_stock(menu, _("_Copy..."), GTK_STOCK_COPY, G_CALLBACK(li_pop_menu_copy_cb), lw);
+ item = menu_item_add_icon(menu, _("_Copy..."), GQ_ICON_COPY, G_CALLBACK(li_pop_menu_copy_cb), lw);
if (!path) gtk_widget_set_sensitive(item, FALSE);
item = menu_item_add(menu, _("_Move..."), G_CALLBACK(li_pop_menu_move_cb), lw);
if (!path) gtk_widget_set_sensitive(item, FALSE);
if (!path) gtk_widget_set_sensitive(item, FALSE);
menu_item_add_divider(menu);
- item = menu_item_add_stock(menu,
+ item = 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(li_pop_menu_move_to_trash_cb), lw);
if (!path) gtk_widget_set_sensitive(item, FALSE);
- item = menu_item_add_stock(menu,
+ item = menu_item_add_icon(menu,
options->file_ops.confirm_delete ? _("_Delete...") :
- _("_Delete"), "edit-delete",
+ _("_Delete"), GQ_ICON_DELETE_SHRED,
G_CALLBACK(li_pop_menu_delete_cb), lw);
if (!path) gtk_widget_set_sensitive(item, FALSE);
menu_item_add_divider(menu);
if (!fullscreen)
{
- menu_item_add(menu, _("_Full screen"), G_CALLBACK(li_pop_menu_full_screen_cb), lw);
+ menu_item_add_icon(menu, _("_Full screen"), GQ_ICON_FULLSCREEN, G_CALLBACK(li_pop_menu_full_screen_cb), lw);
}
else
{
- menu_item_add(menu, _("Exit _full screen"), G_CALLBACK(li_pop_menu_full_screen_cb), lw);
+ menu_item_add_icon(menu, _("Exit _full screen"), GQ_ICON_LEAVE_FULLSCREEN, G_CALLBACK(li_pop_menu_full_screen_cb), lw);
}
menu_item_add_check(menu, _("GIF _animation"), lw->options.animate, G_CALLBACK(li_pop_menu_animate_cb), lw);
item = menu_item_add_check(menu, _("Hide file _list"), lw->options.tools_hidden,
G_CALLBACK(li_pop_menu_hide_cb), lw);
+
+ item = menu_item_add_check(menu, _("Hide Selectable Bars"), lw->options.selectable_toolbars_hidden, G_CALLBACK(layout_selectable_toolbars_toggle), lw);
if (fullscreen) gtk_widget_set_sensitive(item, FALSE);
return menu;
GtkWidget *menu;
menu = layout_image_pop_menu(lw);
- gtk_menu_popup_at_widget(GTK_MENU(menu), lw->image->widget, GDK_GRAVITY_EAST, GDK_GRAVITY_CENTER, NULL);
+ gtk_menu_popup_at_widget(GTK_MENU(menu), lw->image->widget, GDK_GRAVITY_EAST, GDK_GRAVITY_CENTER, nullptr);
}
/*
*----------------------------------------------------------------------------
*/
-static void layout_image_dnd_receive(GtkWidget *widget, GdkDragContext *UNUSED(context),
- gint UNUSED(x), gint UNUSED(y),
+static void layout_image_dnd_receive(GtkWidget *widget, GdkDragContext *,
+ gint, gint,
GtkSelectionData *selection_data, guint info,
- guint UNUSED(time), gpointer data)
+ guint, gpointer data)
{
- LayoutWindow *lw = static_cast<LayoutWindow *>(data);
+ auto lw = static_cast<LayoutWindow *>(data);
gint i;
gchar *url;
if (info == TARGET_TEXT_PLAIN)
{
- url = g_strdup((gchar *)gtk_selection_data_get_data(selection_data));
+ url = g_strdup(reinterpret_cast<const gchar *>(gtk_selection_data_get_data(selection_data)));
download_web_file(url, FALSE, lw);
g_free(url);
}
if (info == TARGET_URI_LIST)
{
list = uri_filelist_from_gtk_selection_data(selection_data);
- 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 = static_cast<FileData *>(list->data);
+ auto fd = static_cast<FileData *>(list->data);
if (isfile(fd->path))
{
else if (isdir(fd->path))
{
layout_set_fd(lw, fd);
- layout_image_set_fd(lw, NULL);
+ layout_image_set_fd(lw, nullptr);
}
}
}
}
-static void layout_image_dnd_get(GtkWidget *widget, GdkDragContext *UNUSED(context),
- GtkSelectionData *selection_data, guint UNUSED(info),
- guint UNUSED(time), gpointer data)
+static void layout_image_dnd_get(GtkWidget *widget, GdkDragContext *,
+ GtkSelectionData *selection_data, guint,
+ guint, gpointer data)
{
- LayoutWindow *lw = static_cast<LayoutWindow *>(data);
+ auto lw = static_cast<LayoutWindow *>(data);
FileData *fd;
gint i;
{
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);
}
}
-static void layout_image_dnd_end(GtkWidget *UNUSED(widget), GdkDragContext *context, gpointer data)
+static void layout_image_dnd_end(GtkWidget *, GdkDragContext *context, gpointer data)
{
- LayoutWindow *lw = static_cast<LayoutWindow *>(data);
+ auto lw = static_cast<LayoutWindow *>(data);
if (gdk_drag_context_get_selected_action(context) == GDK_ACTION_MOVE)
{
FileData *fd;
if (!isfile(fd->path))
{
- if ((guint) row < layout_list_count(lw, NULL) - 1)
+ if (static_cast<guint>(row) < layout_list_count(lw, nullptr) - 1)
{
layout_image_next(lw);
}
void layout_image_scroll(LayoutWindow *lw, gint x, gint y, gboolean connect_scroll)
{
- gdouble dx, dy;
- gint width, height, i;
+ gint i;
if (!layout_valid(&lw)) return;
image_scroll(lw->image, x, y);
if (!connect_scroll) return;
- image_get_image_size(lw->image, &width, &height);
- dx = (gdouble) x / width;
- dy = (gdouble) y / height;
-
for (i = 0; i < MAX_SPLIT_IMAGES; i++)
{
if (lw->split_images[i] && lw->split_images[i] != lw->image)
{
- gdouble sx, sy;
- image_get_scroll_center(lw->split_images[i], &sx, &sy);
- sx += dx;
- sy += dy;
- image_set_scroll_center(lw->split_images[i], sx, sy);
+ image_scroll(lw->split_images[i], x, y);
}
}
imd->orientation = imd->image_fd->user_orientation;
}
- pixbuf_renderer_set_orientation((PixbufRenderer *)imd->pr, imd->orientation);
+ pixbuf_renderer_set_orientation(reinterpret_cast<PixbufRenderer *>(imd->pr), imd->orientation);
}
void layout_image_set_desaturate(LayoutWindow *lw, gboolean desaturate)
image_set_overunderexposed(lw->image, overunderexposed);
}
-//gboolean layout_image_get_overunderexposed(LayoutWindow *lw)
-//{
- //if (!layout_valid(&lw)) return FALSE;
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wunused-function"
+gboolean layout_image_get_overunderexposed_unused(LayoutWindow *lw)
+{
+ if (!layout_valid(&lw)) return FALSE;
- //return image_get_overunderexposed(lw->image);
-//}
+// return image_get_overunderexposed(lw->image);
+ return FALSE;
+}
+#pragma GCC diagnostic pop
void layout_image_set_ignore_alpha(LayoutWindow *lw, gboolean ignore_alpha)
{
}
/* stereo */
-/*
-gint layout_image_stereo_get(LayoutWindow *lw)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wunused-function"
+gint layout_image_stereo_get_unused(LayoutWindow *lw)
{
if (!layout_valid(&lw)) return 0;
- return image_stereo_get(lw->image);
+// return image_stereo_get(lw->image);
+ return 0;
}
-void layout_image_stereo_set(LayoutWindow *lw, gint stereo_mode)
+void layout_image_stereo_set_unused(LayoutWindow *lw, gint stereo_mode)
{
if (!layout_valid(&lw)) return;
image_stereo_set(lw->image, stereo_mode);
}
-void layout_image_stereo_swap(LayoutWindow *lw)
+void layout_image_stereo_swap_unused(LayoutWindow *lw)
{
if (!layout_valid(&lw)) return;
- image_stereo_swap(lw->image);
+// image_stereo_swap(lw->image);
}
-*/
+#pragma GCC diagnostic pop
gint layout_image_stereo_pixbuf_get(LayoutWindow *lw)
{
const gchar *layout_image_get_path(LayoutWindow *lw)
{
- if (!layout_valid(&lw)) return NULL;
+ if (!layout_valid(&lw)) return nullptr;
return image_get_path(lw->image);
}
-//const gchar *layout_image_get_name(LayoutWindow *lw)
-//{
- //if (!layout_valid(&lw)) return NULL;
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wunused-function"
+const gchar *layout_image_get_name_unused(LayoutWindow *lw)
+{
+ if (!layout_valid(&lw)) return nullptr;
- //return image_get_name(lw->image);
-//}
+ return image_get_name(lw->image);
+}
+#pragma GCC diagnostic pop
FileData *layout_image_get_fd(LayoutWindow *lw)
{
- if (!layout_valid(&lw)) return NULL;
+ if (!layout_valid(&lw)) return nullptr;
return image_get_fd(lw->image);
}
CollectionData *layout_image_get_collection(LayoutWindow *lw, CollectInfo **info)
{
- if (!layout_valid(&lw)) return NULL;
+ if (!layout_valid(&lw)) return nullptr;
return image_get_collection(lw->image, info);
}
{
if (!layout_valid(&lw)) return;
-/*
-This should be handled at the caller: in vflist_select_image
+/** @FIXME This should be handled at the caller: in vflist_select_image
if (path)
{
const gchar *old_path;
read_ahead_fd = layout_list_get_fd(lw, index + 1);
}
- if (layout_selection_count(lw, 0) > 1)
+ if (layout_selection_count(lw, nullptr) > 1)
{
GList *x = layout_selection_list_by_index(lw);
GList *y;
return;
}
- if (layout_selection_count(lw, 0) > 1)
+ if (layout_selection_count(lw, nullptr) > 1)
{
GList *x = layout_selection_list_by_index(lw);
gint old = layout_list_get_index(lw, layout_image_get_fd(lw));
if (current >= 0)
{
- if ((guint) current < layout_list_count(lw, NULL) - 1)
+ if (static_cast<guint>(current) < layout_list_count(lw, nullptr) - 1)
{
layout_image_set_index(lw, current + 1);
}
return;
}
- if (layout_selection_count(lw, 0) > 1)
+ if (layout_selection_count(lw, nullptr) > 1)
{
GList *x = layout_selection_list_by_index(lw);
gint old = layout_list_get_index(lw, layout_image_get_fd(lw));
}
else
{
- layout_image_set_index(lw, layout_list_count(lw, NULL) - 1);
+ layout_image_set_index(lw, layout_list_count(lw, nullptr) - 1);
}
}
}
current = layout_image_get_index(lw);
- if (current != 0 && layout_list_count(lw, NULL) > 0)
+ if (current != 0 && layout_list_count(lw, nullptr) > 0)
{
layout_image_set_index(lw, 0);
}
}
current = layout_image_get_index(lw);
- count = layout_list_count(lw, NULL);
+ count = layout_list_count(lw, nullptr);
if (current != count - 1 && count > 0)
{
layout_image_set_index(lw, count - 1);
static void layout_image_focus_in_cb(ImageWindow *imd, gpointer data)
{
- LayoutWindow *lw = static_cast<LayoutWindow *>(data);
+ auto lw = static_cast<LayoutWindow *>(data);
gint i = image_idx(lw, imd);
static void layout_image_button_cb(ImageWindow *imd, GdkEventButton *event, gpointer data)
{
- LayoutWindow *lw = static_cast<LayoutWindow *>(data);
+ auto lw = static_cast<LayoutWindow *>(data);
GtkWidget *menu;
LayoutWindow *lw_new;
gchar *dest_dir;
switch (event->button)
{
case MOUSE_BUTTON_LEFT:
- if (options->image_l_click_archive && imd-> image_fd && imd->image_fd->format_class == FORMAT_CLASS_ARCHIVE)
+ if (event->button == MOUSE_BUTTON_LEFT && event->type == GDK_2BUTTON_PRESS)
+ {
+ layout_image_full_screen_toggle(lw);
+ }
+
+ else if (options->image_l_click_archive && imd-> image_fd && imd->image_fd->format_class == FORMAT_CLASS_ARCHIVE)
{
dest_dir = open_archive(imd->image_fd);
if (dest_dir)
}
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 && imd->image_fd->format_class == FORMAT_CLASS_VIDEO)
{
g_object_set_data(G_OBJECT(menu), "click_parent", imd->widget);
}
- gtk_menu_popup_at_pointer(GTK_MENU(menu), NULL);
+ gtk_menu_popup_at_pointer(GTK_MENU(menu), nullptr);
break;
default:
break;
static void layout_image_scroll_cb(ImageWindow *imd, GdkEventScroll *event, gpointer data)
{
- LayoutWindow *lw = static_cast<LayoutWindow *>(data);
+ auto lw = static_cast<LayoutWindow *>(data);
gint i = image_idx(lw, imd);
static void layout_image_drag_cb(ImageWindow *imd, GdkEventMotion *event, gdouble dx, gdouble dy, gpointer data)
{
gint i;
- LayoutWindow *lw = static_cast<LayoutWindow *>(data);
- gdouble sx, sy;
+ auto lw = static_cast<LayoutWindow *>(data);
+ gdouble sx;
+ gdouble sy;
if (lw->full_screen && lw->image != lw->full_screen->imd &&
imd != lw->full_screen->imd)
static void layout_image_button_inactive_cb(ImageWindow *imd, GdkEventButton *event, gpointer data)
{
- LayoutWindow *lw = static_cast<LayoutWindow *>(data);
+ auto lw = static_cast<LayoutWindow *>(data);
GtkWidget *menu;
gint i = image_idx(lw, imd);
{
g_object_set_data(G_OBJECT(menu), "click_parent", imd->widget);
}
- gtk_menu_popup_at_pointer(GTK_MENU(menu), NULL);
+ gtk_menu_popup_at_pointer(GTK_MENU(menu), nullptr);
break;
default:
break;
static void layout_image_drag_inactive_cb(ImageWindow *imd, GdkEventMotion *event, gdouble dx, gdouble dy, gpointer data)
{
- LayoutWindow *lw = static_cast<LayoutWindow *>(data);
+ auto lw = static_cast<LayoutWindow *>(data);
gint i = image_idx(lw, imd);
if (i != -1)
void layout_status_update_pixel_cb(PixbufRenderer *pr, gpointer data)
{
- LayoutWindow *lw = static_cast<LayoutWindow *>(data);
- gint x_pixel, y_pixel;
- gint width, height;
+ auto lw = static_cast<LayoutWindow *>(data);
+ gint x_pixel;
+ gint y_pixel;
+ gint width;
+ gint height;
gchar *text;
PangoAttrList *attrs;
if(x_pixel >= 0 && y_pixel >= 0)
{
- gint r_mouse, g_mouse, b_mouse;
+ gint r_mouse;
+ gint g_mouse;
+ gint b_mouse;
pixbuf_renderer_get_pixel_colors(pr, x_pixel, y_pixel,
&r_mouse, &g_mouse, &b_mouse);
*----------------------------------------------------------------------------
*/
-static void layout_image_update_cb(ImageWindow *UNUSED(imd), gpointer data)
+static void layout_image_update_cb(ImageWindow *, gpointer data)
{
- LayoutWindow *lw = static_cast<LayoutWindow *>(data);
+ auto lw = static_cast<LayoutWindow *>(data);
layout_status_update_image(lw);
}
void layout_image_deactivate(LayoutWindow *lw, gint i)
{
if (!lw->split_images[i]) return;
- image_set_update_func(lw->split_images[i], NULL, NULL);
+ image_set_update_func(lw->split_images[i], nullptr, nullptr);
layout_image_set_buttons_inactive(lw, i);
image_set_drag_func(lw->split_images[i], layout_image_drag_inactive_cb, lw);
- image_attach_window(lw->split_images[i], NULL, NULL, NULL, FALSE);
+ image_attach_window(lw->split_images[i], nullptr, nullptr, nullptr, FALSE);
image_select(lw->split_images[i], FALSE);
}
layout_image_set_buttons(lw);
image_set_drag_func(lw->image, layout_image_drag_cb, lw);
- image_attach_window(lw->image, lw->window, NULL, GQ_APPNAME, FALSE);
+ image_attach_window(lw->image, lw->window, nullptr, GQ_APPNAME, FALSE);
/* do not highlight selected image in SPLIT_NONE */
/* maybe the image should be selected always and highlight should be controlled by
if (fd)
{
-// layout_list_sync_path(lw, path);
layout_set_fd(lw, fd);
}
layout_status_update_image(lw);
for (i = 0; i < n; i++)
if (!lw->split_images[i])
{
- FileData *img_fd = NULL;
+ FileData *img_fd = nullptr;
double zoom = 0.0;
layout_image_new(lw, i);
image_osd_copy_status(lw->image, lw->split_images[i]);
}
- if (layout_selection_count(lw, 0) > 1)
+ if (layout_selection_count(lw, nullptr) > 1)
{
GList *work = g_list_last(layout_selection_list(lw));
gint j = 0;
while (work && j < i)
{
- FileData *fd = static_cast<FileData *>(work->data);
+ auto fd = static_cast<FileData *>(work->data);
work = work->prev;
if (!fd || !*fd->path || fd->parent ||
if (img_fd)
{
- gdouble sx, sy;
+ gdouble sx;
+ gdouble sy;
image_change_fd(lw->split_images[i], img_fd, zoom);
image_get_scroll_center(lw->image, &sx, &sy);
image_set_scroll_center(lw->split_images[i], sx, sy);
if (lw->split_images[i])
{
g_object_unref(lw->split_images[i]->widget);
- lw->split_images[i] = NULL;
+ lw->split_images[i] = nullptr;
}
}
layout_image_setup_split_common(lw, 2);
/* horizontal split means vpaned and vice versa */
- if (horizontal)
- {
- paned = gtk_vpaned_new();
- DEBUG_NAME(paned);
- }
- else
- {
- paned = gtk_hpaned_new();
- DEBUG_NAME(paned);
- }
+ paned = gtk_paned_new(horizontal ? GTK_ORIENTATION_VERTICAL : GTK_ORIENTATION_HORIZONTAL);
+ DEBUG_NAME(paned);
gtk_paned_pack1(GTK_PANED(paned), lw->split_images[0]->widget, TRUE, TRUE);
gtk_paned_pack2(GTK_PANED(paned), lw->split_images[1]->widget, TRUE, TRUE);
gtk_widget_get_allocation(lw->utility_paned, &allocation);
- hpaned1 = gtk_hpaned_new();
+ hpaned1 = gtk_paned_new(GTK_ORIENTATION_HORIZONTAL);
DEBUG_NAME(hpaned1);
- hpaned2 = gtk_hpaned_new();
+ hpaned2 = gtk_paned_new(GTK_ORIENTATION_HORIZONTAL);
DEBUG_NAME(hpaned2);
if (lw->bar && gtk_widget_get_visible(lw->bar))
layout_image_setup_split_common(lw, 4);
- hpaned = gtk_hpaned_new();
+ hpaned = gtk_paned_new(GTK_ORIENTATION_HORIZONTAL);
DEBUG_NAME(hpaned);
- vpaned1 = gtk_vpaned_new();
+ vpaned1 = gtk_paned_new(GTK_ORIENTATION_VERTICAL);
DEBUG_NAME(vpaned1);
- vpaned2 = gtk_vpaned_new();
+ vpaned2 = gtk_paned_new(GTK_ORIENTATION_VERTICAL);
DEBUG_NAME(vpaned2);
gtk_paned_pack1(GTK_PANED(vpaned1), lw->split_images[0]->widget, TRUE, TRUE);
layout_image_set_collection(lw, cd, next_collection);
return;
}
- layout_image_set_fd(lw, NULL);
+ layout_image_set_fd(lw, nullptr);
}
/* the image will be set to the next image from the list soon,
void layout_image_notify_cb(FileData *fd, NotifyType type, gpointer data)
{
- LayoutWindow *lw = static_cast<LayoutWindow *>(data);
+ auto lw = static_cast<LayoutWindow *>(data);
if (!(type & NOTIFY_CHANGE) || !fd->change) return;