Skip to content

Commit 19bee28

Browse files
qarkaicaclark
authored andcommitted
Deduplicate dupe menu callbacks
1 parent ea8155e commit 19bee28

File tree

1 file changed

+25
-48
lines changed

1 file changed

+25
-48
lines changed

src/dupe.cc

Lines changed: 25 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -3087,7 +3087,7 @@ static void dupe_window_recompare(DupeWindow *dw)
30873087
dupe_check_start(dw);
30883088
}
30893089

3090-
static void dupe_menu_view(DupeItem *di, GtkWidget *listview, gint new_window)
3090+
static void dupe_menu_view(DupeItem *di, GtkWidget *listview, gboolean new_window)
30913091
{
30923092
if (!di) return;
30933093

@@ -3183,18 +3183,12 @@ static void dupe_window_append_file_list(DupeWindow *dw, gint on_second)
31833183
*-------------------------------------------------------------------
31843184
*/
31853185

3186+
template<gboolean new_window>
31863187
static void dupe_menu_view_cb(GtkWidget *, gpointer data)
31873188
{
31883189
auto dw = static_cast<DupeWindow *>(data);
31893190

3190-
if (dw->click_item) dupe_menu_view(dw->click_item, dw->listview, FALSE);
3191-
}
3192-
3193-
static void dupe_menu_viewnew_cb(GtkWidget *, gpointer data)
3194-
{
3195-
auto dw = static_cast<DupeWindow *>(data);
3196-
3197-
if (dw->click_item) dupe_menu_view(dw->click_item, dw->listview, TRUE);
3191+
if (dw->click_item) dupe_menu_view(dw->click_item, dw->listview, new_window);
31983192
}
31993193

32003194
static void dupe_menu_select_all_cb(GtkWidget *, gpointer data)
@@ -3217,20 +3211,13 @@ static void dupe_menu_select_none_cb(GtkWidget *, gpointer data)
32173211
gtk_tree_selection_unselect_all(selection);
32183212
}
32193213

3220-
static void dupe_menu_select_dupes_set1_cb(GtkWidget *, gpointer data)
3221-
{
3222-
auto dw = static_cast<DupeWindow *>(data);
3223-
3224-
options->duplicates_select_type = DUPE_SELECT_GROUP1;
3225-
dupe_listview_select_dupes(dw, DUPE_SELECT_GROUP1);
3226-
}
3227-
3228-
static void dupe_menu_select_dupes_set2_cb(GtkWidget *, gpointer data)
3214+
template<DupeSelectType parents>
3215+
static void dupe_menu_select_dupes_cb(GtkWidget *, gpointer data)
32293216
{
32303217
auto dw = static_cast<DupeWindow *>(data);
32313218

3232-
options->duplicates_select_type = DUPE_SELECT_GROUP2;
3233-
dupe_listview_select_dupes(dw, DUPE_SELECT_GROUP2);
3219+
options->duplicates_select_type = parents;
3220+
dupe_listview_select_dupes(dw, parents);
32343221
}
32353222

32363223
static void dupe_menu_edit_cb(GtkWidget *widget, gpointer data)
@@ -3272,14 +3259,10 @@ static void dupe_menu_rename_cb(GtkWidget *, gpointer data)
32723259
file_util_rename(nullptr, dupe_listview_get_selection(dw->listview), dw->window);
32733260
}
32743261

3262+
template<gboolean safe_delete>
32753263
static void dupe_menu_delete_cb(GtkWidget *, gpointer data)
32763264
{
3277-
dupe_window_delete_selected(static_cast<DupeWindow *>(data), FALSE);
3278-
}
3279-
3280-
static void dupe_menu_move_to_trash_cb(GtkWidget *, gpointer data)
3281-
{
3282-
dupe_window_delete_selected(static_cast<DupeWindow *>(data), TRUE);
3265+
dupe_window_delete_selected(static_cast<DupeWindow *>(data), safe_delete);
32833266
}
32843267

32853268
template<gboolean quoted>
@@ -3361,18 +3344,18 @@ static GtkWidget *dupe_menu_popup_main(DupeWindow *dw, DupeItem *di)
33613344
g_object_set_data(G_OBJECT(menu), "accel_group", accel_group);
33623345

33633346
menu_item_add_sensitive(menu, _("_View"), on_row,
3364-
G_CALLBACK(dupe_menu_view_cb), dw);
3347+
G_CALLBACK(dupe_menu_view_cb<FALSE>), dw);
33653348
menu_item_add_icon_sensitive(menu, _("View in _new window"), GQ_ICON_NEW, on_row,
3366-
G_CALLBACK(dupe_menu_viewnew_cb), dw);
3349+
G_CALLBACK(dupe_menu_view_cb<TRUE>), dw);
33673350
menu_item_add_divider(menu);
33683351
menu_item_add_sensitive(menu, _("Select all"), (dw->dupes != nullptr),
33693352
G_CALLBACK(dupe_menu_select_all_cb), dw);
33703353
menu_item_add_sensitive(menu, _("Select none"), (dw->dupes != nullptr),
33713354
G_CALLBACK(dupe_menu_select_none_cb), dw);
33723355
menu_item_add_sensitive(menu, _("Select group _1 duplicates"), (dw->dupes != nullptr),
3373-
G_CALLBACK(dupe_menu_select_dupes_set1_cb), dw);
3356+
G_CALLBACK(dupe_menu_select_dupes_cb<DUPE_SELECT_GROUP1>), dw);
33743357
menu_item_add_sensitive(menu, _("Select group _2 duplicates"), (dw->dupes != nullptr),
3375-
G_CALLBACK(dupe_menu_select_dupes_set2_cb), dw);
3358+
G_CALLBACK(dupe_menu_select_dupes_cb<DUPE_SELECT_GROUP2>), dw);
33763359
menu_item_add_divider(menu);
33773360

33783361
submenu_add_export(menu, &item, G_CALLBACK(dupe_pop_menu_export_cb), dw);
@@ -3404,14 +3387,14 @@ static GtkWidget *dupe_menu_popup_main(DupeWindow *dw, DupeItem *di)
34043387
G_CALLBACK(dupe_menu_copy_path_cb<FALSE>), dw);
34053388

34063389
menu_item_add_divider(menu);
3407-
menu_item_add_icon_sensitive(menu,
3408-
options->file_ops.confirm_move_to_trash ? _("Move selection to Trash...") :
3409-
_("Move selection to Trash"), GQ_ICON_DELETE, on_row,
3410-
G_CALLBACK(dupe_menu_move_to_trash_cb), dw);
3411-
menu_item_add_icon_sensitive(menu,
3412-
options->file_ops.confirm_delete ? _("_Delete selection...") :
3413-
_("_Delete selection"), GQ_ICON_DELETE_SHRED, on_row,
3414-
G_CALLBACK(dupe_menu_delete_cb), dw);
3390+
menu_item_add_icon_sensitive(menu, options->file_ops.confirm_move_to_trash ?
3391+
_("Move selection to Trash...") : _("Move selection to Trash"),
3392+
GQ_ICON_DELETE, on_row,
3393+
G_CALLBACK(dupe_menu_delete_cb<TRUE>), dw);
3394+
menu_item_add_icon_sensitive(menu, options->file_ops.confirm_delete ?
3395+
_("_Delete selection...") : _("_Delete selection"),
3396+
GQ_ICON_DELETE_SHRED, on_row,
3397+
G_CALLBACK(dupe_menu_delete_cb<FALSE>), dw);
34153398

34163399
menu_item_add_divider(menu);
34173400
menu_item_add_icon_sensitive(menu, _("Rem_ove"), GQ_ICON_REMOVE, on_row,
@@ -3634,18 +3617,12 @@ static void dupe_second_clear(DupeWindow *dw)
36343617
dupe_second_update_status(dw);
36353618
}
36363619

3620+
template<gboolean new_window>
36373621
static void dupe_second_menu_view_cb(GtkWidget *, gpointer data)
36383622
{
36393623
auto dw = static_cast<DupeWindow *>(data);
36403624

3641-
if (dw->click_item) dupe_menu_view(dw->click_item, dw->second_listview, FALSE);
3642-
}
3643-
3644-
static void dupe_second_menu_viewnew_cb(GtkWidget *, gpointer data)
3645-
{
3646-
auto dw = static_cast<DupeWindow *>(data);
3647-
3648-
if (dw->click_item) dupe_menu_view(dw->click_item, dw->second_listview, TRUE);
3625+
if (dw->click_item) dupe_menu_view(dw->click_item, dw->second_listview, new_window);
36493626
}
36503627

36513628
static void dupe_second_menu_select_all_cb(GtkWidget *, gpointer data)
@@ -3696,9 +3673,9 @@ static GtkWidget *dupe_menu_popup_second(DupeWindow *dw, DupeItem *di)
36963673
g_object_set_data(G_OBJECT(menu), "accel_group", accel_group);
36973674

36983675
menu_item_add_sensitive(menu, _("_View"), on_row,
3699-
G_CALLBACK(dupe_second_menu_view_cb), dw);
3676+
G_CALLBACK(dupe_second_menu_view_cb<FALSE>), dw);
37003677
menu_item_add_icon_sensitive(menu, _("View in _new window"), GQ_ICON_NEW, on_row,
3701-
G_CALLBACK(dupe_second_menu_viewnew_cb), dw);
3678+
G_CALLBACK(dupe_second_menu_view_cb<TRUE>), dw);
37023679
menu_item_add_divider(menu);
37033680
menu_item_add_sensitive(menu, _("Select all"), notempty,
37043681
G_CALLBACK(dupe_second_menu_select_all_cb), dw);

0 commit comments

Comments
 (0)