@@ -3087,7 +3087,7 @@ static void dupe_window_recompare(DupeWindow *dw)
3087
3087
dupe_check_start (dw);
3088
3088
}
3089
3089
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)
3091
3091
{
3092
3092
if (!di) return ;
3093
3093
@@ -3183,18 +3183,12 @@ static void dupe_window_append_file_list(DupeWindow *dw, gint on_second)
3183
3183
*-------------------------------------------------------------------
3184
3184
*/
3185
3185
3186
+ template <gboolean new_window>
3186
3187
static void dupe_menu_view_cb (GtkWidget *, gpointer data)
3187
3188
{
3188
3189
auto dw = static_cast <DupeWindow *>(data);
3189
3190
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);
3198
3192
}
3199
3193
3200
3194
static void dupe_menu_select_all_cb (GtkWidget *, gpointer data)
@@ -3217,20 +3211,13 @@ static void dupe_menu_select_none_cb(GtkWidget *, gpointer data)
3217
3211
gtk_tree_selection_unselect_all (selection);
3218
3212
}
3219
3213
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)
3229
3216
{
3230
3217
auto dw = static_cast <DupeWindow *>(data);
3231
3218
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 );
3234
3221
}
3235
3222
3236
3223
static void dupe_menu_edit_cb (GtkWidget *widget, gpointer data)
@@ -3272,14 +3259,10 @@ static void dupe_menu_rename_cb(GtkWidget *, gpointer data)
3272
3259
file_util_rename (nullptr , dupe_listview_get_selection (dw->listview ), dw->window );
3273
3260
}
3274
3261
3262
+ template <gboolean safe_delete>
3275
3263
static void dupe_menu_delete_cb (GtkWidget *, gpointer data)
3276
3264
{
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);
3283
3266
}
3284
3267
3285
3268
template <gboolean quoted>
@@ -3361,18 +3344,18 @@ static GtkWidget *dupe_menu_popup_main(DupeWindow *dw, DupeItem *di)
3361
3344
g_object_set_data (G_OBJECT (menu), " accel_group" , accel_group);
3362
3345
3363
3346
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);
3365
3348
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);
3367
3350
menu_item_add_divider (menu);
3368
3351
menu_item_add_sensitive (menu, _ (" Select all" ), (dw->dupes != nullptr ),
3369
3352
G_CALLBACK (dupe_menu_select_all_cb), dw);
3370
3353
menu_item_add_sensitive (menu, _ (" Select none" ), (dw->dupes != nullptr ),
3371
3354
G_CALLBACK (dupe_menu_select_none_cb), dw);
3372
3355
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);
3374
3357
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);
3376
3359
menu_item_add_divider (menu);
3377
3360
3378
3361
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)
3404
3387
G_CALLBACK (dupe_menu_copy_path_cb<FALSE >), dw);
3405
3388
3406
3389
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);
3415
3398
3416
3399
menu_item_add_divider (menu);
3417
3400
menu_item_add_icon_sensitive (menu, _ (" Rem_ove" ), GQ_ICON_REMOVE, on_row,
@@ -3634,18 +3617,12 @@ static void dupe_second_clear(DupeWindow *dw)
3634
3617
dupe_second_update_status (dw);
3635
3618
}
3636
3619
3620
+ template <gboolean new_window>
3637
3621
static void dupe_second_menu_view_cb (GtkWidget *, gpointer data)
3638
3622
{
3639
3623
auto dw = static_cast <DupeWindow *>(data);
3640
3624
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);
3649
3626
}
3650
3627
3651
3628
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)
3696
3673
g_object_set_data (G_OBJECT (menu), " accel_group" , accel_group);
3697
3674
3698
3675
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);
3700
3677
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);
3702
3679
menu_item_add_divider (menu);
3703
3680
menu_item_add_sensitive (menu, _ (" Select all" ), notempty,
3704
3681
G_CALLBACK (dupe_second_menu_select_all_cb), dw);
0 commit comments