<para>Controls the pause state of an active slide show, the text of the menu will change to reflect the action that will be performed.</para>
</listitem>
</varlistentry>
+ <varlistentry>
+ <term>Copy image to clipboard</term>
+ <listitem>
+ <para>Copy the pixbuf to the clipboard. This may be used by programs such as Gimp.</para>
+ </listitem>
+ </varlistentry>
</variablelist>
<para />
</section>
<varlistentry>
<term>
<menuchoice>
- <guimenu>Copy path</guimenu>
+ <guimenu>Copy to clipboard</guimenu>
</menuchoice>
</term>
<listitem>
<varlistentry>
<term>
<menuchoice>
- <guimenu>Copy path unquoted</guimenu>
+ <guimenu>Copy to clipboard (unquoted)</guimenu>
</menuchoice>
</term>
<listitem>
<para>Copy selected item-path(s) to clipboard. The data will not be enclosed in quotes.</para>
</listitem>
</varlistentry>
+ <varlistentry>
+ <term>
+ <menuchoice>
+ <shortcut>
+ <keycombo>
+ <keycap>Ctrl</keycap>
+ <keycap>X</keycap>
+ </keycombo>
+ </shortcut>
+ <guimenu>Cut to clipboard</guimenu>
+ </menuchoice>
+ </term>
+ <listitem>
+ <para>Perform a standard control-X operation.</para>
+ </listitem>
+ </varlistentry>
<varlistentry>
<term>
<menuchoice>
<row> <entry> <code> <keycap> Shift + KP_Subtract </keycap> </code> </entry> <entry> Connected Zoom out </entry> </row>
<row> <entry> <code> <keycap> underscore </keycap> </code> </entry> <entry> Connected Zoom out </entry> </row>
<row> <entry> <code> <keycap> Ctrl + C </keycap> </code> </entry> <entry> Copy </entry> </row>
+<row> <entry> <code> <keycap> Ctrl + X </keycap> </code> </entry> <entry> Cut to clipboard </entry> </row>
<row> <entry> <code> <keycap> Delete </keycap> </code> </entry> <entry> Move to Trash </entry> </row>
<row> <entry> <code> <keycap> KP_Delete </keycap> </code> </entry> <entry> Move to Trash </entry> </row>
<row> <entry> <code> <keycap> Ctrl + D </keycap> </code> </entry> <entry> Move to Trash </entry> </row>
{
auto ct = static_cast<CollectTable *>(data);
- file_util_copy_path_list_to_clipboard(collection_table_popup_file_list(ct), TRUE);
+ file_util_path_list_to_clipboard(collection_table_popup_file_list(ct), TRUE, TRUE);
}
static void collection_table_popup_copy_path_unquoted_cb(GtkWidget *, gpointer data)
{
auto ct = static_cast<CollectTable *>(data);
- file_util_copy_path_list_to_clipboard(collection_table_popup_file_list(ct), FALSE);
+ file_util_path_list_to_clipboard(collection_table_popup_file_list(ct), FALSE, TRUE);
}
static void collection_table_popup_sort_cb(GtkWidget *widget, gpointer data)
{
auto dw = static_cast<DupeWindow *>(data);
- file_util_copy_path_list_to_clipboard(dupe_listview_get_selection(dw, dw->listview), TRUE);
+ file_util_path_list_to_clipboard(dupe_listview_get_selection(dw, dw->listview), TRUE, TRUE);
}
static void dupe_menu_copy_path_unquoted_cb(GtkWidget *, gpointer data)
{
auto dw = static_cast<DupeWindow *>(data);
- file_util_copy_path_list_to_clipboard(dupe_listview_get_selection(dw, dw->listview), FALSE);
+ file_util_path_list_to_clipboard(dupe_listview_get_selection(dw, dw->listview), FALSE, TRUE);
}
static void dupe_menu_remove_cb(GtkWidget *, gpointer data)
ImageWindow *imd;
imd = view_window_active_image(vw);
- file_util_copy_path_to_clipboard(image_get_fd(imd), TRUE);
+ file_util_copy_path_to_clipboard(image_get_fd(imd), TRUE, TRUE);
}
static void view_copy_path_unquoted_cb(GtkWidget *, gpointer data)
ImageWindow *imd;
imd = view_window_active_image(vw);
- file_util_copy_path_to_clipboard(image_get_fd(imd), FALSE);
+ file_util_copy_path_to_clipboard(image_get_fd(imd), FALSE, TRUE);
}
static void view_fullscreen_cb(GtkWidget *, gpointer data)
{
auto lw = static_cast<LayoutWindow *>(data);
- file_util_copy_path_to_clipboard(layout_image_get_fd(lw), TRUE);
+ file_util_copy_path_to_clipboard(layout_image_get_fd(lw), TRUE, TRUE);
}
static void li_pop_menu_copy_path_unquoted_cb(GtkWidget *, gpointer data)
{
auto lw = static_cast<LayoutWindow *>(data);
- file_util_copy_path_to_clipboard(layout_image_get_fd(lw), FALSE);
+ file_util_copy_path_to_clipboard(layout_image_get_fd(lw), FALSE, TRUE);
+}
+
+static void li_pop_menu_cut_path_cb(GtkWidget *, gpointer data)
+{
+ auto lw = static_cast<LayoutWindow *>(data);
+
+ file_util_copy_path_to_clipboard(layout_image_get_fd(lw), FALSE, FALSE);
}
#if HAVE_GTK4
if (!path) gtk_widget_set_sensitive(item, FALSE);
item = menu_item_add(menu, _("_Rename..."), G_CALLBACK(li_pop_menu_rename_cb), lw);
if (!path) gtk_widget_set_sensitive(item, FALSE);
- item = menu_item_add(menu, _("_Copy path to clipboard"), G_CALLBACK(li_pop_menu_copy_path_cb), lw);
- item = menu_item_add(menu, _("_Copy path unquoted to clipboard"), G_CALLBACK(li_pop_menu_copy_path_unquoted_cb), lw);
+ item = menu_item_add(menu, _("_Copy to clipboard"), G_CALLBACK(li_pop_menu_copy_path_cb), lw);
+ item = menu_item_add(menu, _("_Copy to clipboard (unquoted)"), G_CALLBACK(li_pop_menu_copy_path_unquoted_cb), lw);
item = menu_item_add(menu, _("Copy _image to clipboard"), G_CALLBACK(li_pop_menu_copy_image_cb), lw);
+ item = menu_item_add(menu, _("Cut to clipboard"), G_CALLBACK(li_pop_menu_cut_path_cb), lw);
if (!path) gtk_widget_set_sensitive(item, FALSE);
menu_item_add_divider(menu);
{
auto lw = static_cast<LayoutWindow *>(data);
- file_util_copy_path_list_to_clipboard(layout_selection_list(lw), TRUE);
+ file_util_path_list_to_clipboard(layout_selection_list(lw), TRUE, TRUE);
}
static void layout_menu_copy_path_unquoted_cb(GtkAction *, gpointer data)
{
auto lw = static_cast<LayoutWindow *>(data);
- file_util_copy_path_list_to_clipboard(layout_selection_list(lw), FALSE);
+ file_util_path_list_to_clipboard(layout_selection_list(lw), FALSE, TRUE);
+}
+
+static void layout_menu_cut_path_cb(GtkAction *, gpointer data)
+{
+ auto lw = static_cast<LayoutWindow *>(data);
+
+ file_util_path_list_to_clipboard(layout_selection_list(lw), FALSE, FALSE);
}
static void layout_menu_move_cb(GtkAction *, gpointer data)
{ "ConnectZoomOutAlt1", GQ_ICON_ZOOM_OUT, N_("Zoom _out"), "<shift>KP_Subtract", N_("Connected Zoom out"), CB(layout_menu_connect_zoom_out_cb) },
{ "ConnectZoomOut", GQ_ICON_ZOOM_OUT, N_("Zoom _out"), "underscore", N_("Connected Zoom out"), CB(layout_menu_connect_zoom_out_cb) },
{ "Copy", GQ_ICON_COPY, N_("_Copy..."), "<control>C", N_("Copy..."), CB(layout_menu_copy_cb) },
- { "CopyPath", nullptr, N_("_Copy path to clipboard"), nullptr, N_("Copy path to clipboard"), CB(layout_menu_copy_path_cb) },
- { "CopyPathUnquoted", nullptr, N_("_Copy path unquoted to clipboard"), nullptr, N_("Copy path unquoted to clipboard"), CB(layout_menu_copy_path_unquoted_cb) },
+ { "CopyPath", nullptr, N_("_Copy to clipboard"), nullptr, N_("Copy to clipboard"), CB(layout_menu_copy_path_cb) },
+ { "CopyPathUnquoted", nullptr, N_("_Copy to clipboard (unquoted)"), nullptr, N_("Copy to clipboard (unquoted)"), CB(layout_menu_copy_path_unquoted_cb) },
+ { "CutPath", nullptr, N_("_Cut to clipboard"), "<control>X", N_("Cut to clipboard"), CB(layout_menu_cut_path_cb) },
{ "DeleteAlt1", GQ_ICON_USER_TRASH, N_("Move to Trash..."), "Delete", N_("Move to Trash..."), CB(layout_menu_move_to_trash_key_cb) },
{ "DeleteAlt2", GQ_ICON_USER_TRASH, N_("Move to Trash..."), "KP_Delete", N_("Move to Trash..."), CB(layout_menu_move_to_trash_key_cb) },
{ "Delete", GQ_ICON_USER_TRASH, N_("Move to Trash..."), "<control>D", N_("Move to Trash..."), CB(layout_menu_move_to_trash_cb) },
FileData *fd;
fd = pan_menu_click_fd(pw);
- if (fd) file_util_copy_path_to_clipboard(fd, TRUE);
+ if (fd) file_util_copy_path_to_clipboard(fd, TRUE, TRUE);
}
static void pan_copy_path_unquoted_cb(GtkWidget *, gpointer data)
FileData *fd;
fd = pan_menu_click_fd(pw);
- if (fd) file_util_copy_path_to_clipboard(fd, FALSE);
+ if (fd) file_util_copy_path_to_clipboard(fd, FALSE, TRUE);
}
static void pan_exif_date_toggle_cb(GtkWidget *widget, gpointer data)
G_CALLBACK(pan_move_cb), pw);
menu_item_add_sensitive(menu, _("_Rename..."), active,
G_CALLBACK(pan_rename_cb), pw);
- menu_item_add_sensitive(menu, _("_Copy path to clipboard"), active,
+ menu_item_add_sensitive(menu, _("_Copy to clipboard"), active,
G_CALLBACK(pan_copy_path_cb), pw);
- menu_item_add_sensitive(menu, _("_Copy path unquoted to clipboard"), active,
+ menu_item_add_sensitive(menu, _("_Copy to clipboard (unquoted)"), active,
G_CALLBACK(pan_copy_path_unquoted_cb), pw);
menu_item_add_divider(menu);
{
auto sd = static_cast<SearchData *>(data);
- file_util_copy_path_list_to_clipboard(search_result_selection_list(sd), TRUE);
+ file_util_path_list_to_clipboard(search_result_selection_list(sd), TRUE, TRUE);
}
static void sr_menu_copy_path_unquoted_cb(GtkWidget *, gpointer data)
{
auto sd = static_cast<SearchData *>(data);
- file_util_copy_path_list_to_clipboard(search_result_selection_list(sd), FALSE);
+ file_util_path_list_to_clipboard(search_result_selection_list(sd), FALSE, TRUE);
}
static void sr_menu_play_cb(GtkWidget *, gpointer data)
<separator/>
<menuitem action="CopyPath"/>
<menuitem action="CopyPathUnquoted"/>
+ <menuitem action="CutPath"/>
<placeholder name="ClipboardSection"/>
<separator/>
<menuitem action="ShowMarks"/>
<separator/>
<menuitem action="CopyPath"/>
<menuitem action="CopyPathUnquoted"/>
+ <menuitem action="CutPath"/>
<placeholder name="ClipboardSection"/>
<separator/>
<menuitem action="ShowMarks"/>
{
GList *path_list; /**< g_strdup(fd->path) */
gboolean quoted;
+ gboolean action_copy;
};
/*
if (clipboard == gtk_clipboard_get(GDK_SELECTION_CLIPBOARD) && info == CLIPBOARD_X_SPECIAL_GNOME_COPIED_FILES)
{
- g_string_append(path_list_str, "copy");
+ g_string_append(path_list_str, cbd->action_copy ? "copy" : "cut");
while (work)
{
g_free(cbd);
}
-void file_util_copy_path_to_clipboard(FileData *fd, gboolean quoted)
+/**
+ * @brief
+ * @param fd
+ * @param quoted
+ * @param action_copy True: action is "copy". False: action is "cut"
+ *
+ *
+ */
+void file_util_copy_path_to_clipboard(FileData *fd, gboolean quoted, gboolean action_copy)
{
ClipboardData *cbd;
cbd = g_new0(ClipboardData, 1);
cbd->path_list = nullptr;
cbd->quoted = quoted;
+ cbd->action_copy = action_copy;
cbd->path_list = g_list_append(cbd->path_list, g_strdup(fd->path));
gtk_clipboard_set_with_data(gtk_clipboard_get(GDK_SELECTION_PRIMARY), target_types, target_types_n, clipboard_get_func, clipboard_clear_func, cbd);
cbd = g_new0(ClipboardData, 1);
cbd->path_list = nullptr;
cbd->quoted = quoted;
+ cbd->action_copy = action_copy;
cbd->path_list = g_list_append(cbd->path_list, g_strdup(fd->path));
gtk_clipboard_set_with_data(gtk_clipboard_get(GDK_SELECTION_CLIPBOARD), target_types, target_types_n, clipboard_get_func, clipboard_clear_func, cbd);
* @brief
* @param fd_list List of fd
* @param quoted
+ * @param action_copy True: action is "copy". False: action is "cut"
*
*
*/
-void file_util_copy_path_list_to_clipboard(GList *fd_list, gboolean quoted)
+void file_util_path_list_to_clipboard(GList *fd_list, gboolean quoted, gboolean action_copy)
{
ClipboardData *cbd;
FileData *fd;
cbd = g_new0(ClipboardData, 1);
cbd->path_list = nullptr;
cbd->quoted = quoted;
+ cbd->action_copy = action_copy;
work = fd_list;
while (work)
cbd = g_new0(ClipboardData, 1);
cbd->path_list = nullptr;
cbd->quoted = quoted;
+ cbd->action_copy = action_copy;
work = fd_list;
while (work)
void file_util_delete_dir(FileData *source_fd, GtkWidget *parent);
-void file_util_copy_path_to_clipboard(FileData *fd, gboolean quoted);
-void file_util_copy_path_list_to_clipboard(GList *list, gboolean quoted);
+void file_util_copy_path_to_clipboard(FileData *fd, gboolean quoted, gboolean action_copy);
+void file_util_path_list_to_clipboard(GList *list, gboolean quoted, gboolean action_copy);
gchar *new_folder(GtkWindow *window, gchar *path);
#endif
if (!vd->click_fd) return;
- file_util_copy_path_to_clipboard(vd->click_fd, TRUE);
+ file_util_copy_path_to_clipboard(vd->click_fd, TRUE, TRUE);
}
static void vd_pop_menu_copy_path_unquoted_cb(GtkWidget *, gpointer data)
if (!vd->click_fd) return;
- file_util_copy_path_to_clipboard(vd->click_fd, FALSE);
+ file_util_copy_path_to_clipboard(vd->click_fd, FALSE, TRUE);
+}
+
+static void vd_pop_menu_cut_path_cb(GtkWidget *, gpointer data)
+{
+ auto vd = static_cast<ViewDir *>(data);
+
+ if (!vd->click_fd) return;
+
+ file_util_copy_path_to_clipboard(vd->click_fd, FALSE, FALSE);
}
static void vd_pop_submenu_dir_view_as_cb(GtkWidget *widget, gpointer data)
menu_item_add_sensitive(menu, _("_Rename..."), rename_delete_active,
G_CALLBACK(vd_pop_menu_rename_cb), vd);
- menu_item_add(menu, _("_Copy path"),
+ menu_item_add(menu, _("_Copy to clipboard"),
G_CALLBACK(vd_pop_menu_copy_path_cb), vd);
- menu_item_add(menu, _("_Copy path unquoted"),
+ menu_item_add(menu, _("_Copy to clipboard (unquoted)"),
G_CALLBACK(vd_pop_menu_copy_path_unquoted_cb), vd);
+ menu_item_add(menu, _("_Cut to clipboard"),
+ G_CALLBACK(vd_pop_menu_cut_path_cb), vd);
+
menu_item_add_icon_sensitive(menu, _("_Delete..."), GQ_ICON_DELETE, rename_delete_active,
G_CALLBACK(vd_pop_menu_delete_cb), vd);
menu_item_add_divider(menu);
{
auto vf = static_cast<ViewFile *>(data);
- file_util_copy_path_list_to_clipboard(vf_pop_menu_file_list(vf), TRUE);
+ file_util_path_list_to_clipboard(vf_pop_menu_file_list(vf), TRUE, TRUE);
}
static void vf_pop_menu_copy_path_unquoted_cb(GtkWidget *, gpointer data)
{
auto vf = static_cast<ViewFile *>(data);
- file_util_copy_path_list_to_clipboard(vf_pop_menu_file_list(vf), FALSE);
+ file_util_path_list_to_clipboard(vf_pop_menu_file_list(vf), FALSE, TRUE);
+}
+
+static void vf_pop_menu_cut_path_cb(GtkWidget *, gpointer data)
+{
+ auto vf = static_cast<ViewFile *>(data);
+
+ file_util_path_list_to_clipboard(vf_pop_menu_file_list(vf), FALSE, FALSE);
}
static void vf_pop_menu_enable_grouping_cb(GtkWidget *, gpointer data)
G_CALLBACK(vf_pop_menu_move_cb), vf);
menu_item_add_sensitive(menu, _("_Rename..."), active,
G_CALLBACK(vf_pop_menu_rename_cb), vf);
- menu_item_add_sensitive(menu, _("_Copy path to clipboard"), active,
+ menu_item_add_sensitive(menu, _("_Copy to clipboard"), active,
G_CALLBACK(vf_pop_menu_copy_path_cb), vf);
- menu_item_add_sensitive(menu, _("_Copy path unquoted to clipboard"), active,
+ menu_item_add_sensitive(menu, _("_Copy to clipboard (unquoted)"), active,
G_CALLBACK(vf_pop_menu_copy_path_unquoted_cb), vf);
+ menu_item_add_sensitive(menu, _("_Cut to clipboard"), active,
+ G_CALLBACK(vf_pop_menu_cut_path_cb), vf);
menu_item_add_divider(menu);
menu_item_add_icon_sensitive(menu,
options->file_ops.confirm_move_to_trash ? _("Move to Trash...") :