@@ -2443,6 +2443,21 @@ LRESULT CALLBACK MultiReplace::ListViewSubclassProc(HWND hwnd, UINT msg, WPARAM
2443
2443
break ;
2444
2444
}
2445
2445
2446
+ case WM_SYSKEYDOWN:
2447
+ {
2448
+ if ((GetKeyState (VK_MENU) & 0x8000 ) && wParam == VK_UP) {
2449
+ int iItem = ListView_GetNextItem (hwnd, -1 , LVNI_SELECTED);
2450
+ if (iItem >= 0 ) { NMITEMACTIVATE nmia{}; nmia.iItem = iItem; pThis->handleCopyBack (&nmia); }
2451
+ return 0 ;
2452
+ }
2453
+ // Optional fallback for Alt+E / Alt+D
2454
+ if (GetKeyState (VK_MENU) & 0x8000 ) {
2455
+ if (wParam == ' E' ) { pThis->setSelections (true , ListView_GetSelectedCount (hwnd) > 0 ); return 0 ; }
2456
+ if (wParam == ' D' ) { pThis->setSelections (false , ListView_GetSelectedCount (hwnd) > 0 ); return 0 ; }
2457
+ }
2458
+ break ;
2459
+ }
2460
+
2446
2461
case WM_TIMER: {
2447
2462
if (wParam == 1 ) { // Tooltip re-enable timer
2448
2463
KillTimer (hwnd, 1 ); // Kill the timer first to prevent it from firing again
@@ -3279,7 +3294,6 @@ INT_PTR CALLBACK MultiReplace::run_dlgProc(UINT message, WPARAM wParam, LPARAM l
3279
3294
(void )lstrcpynW (plvdi->item .pszText , d.replaceCount .c_str (), plvdi->item .cchTextMax );
3280
3295
}
3281
3296
else if (columnIndices[ColumnID::SELECTION] != -1 && subItem == columnIndices[ColumnID::SELECTION]) {
3282
- // If you draw this via text (icons), supply a short glyph; if via custom draw/images, you can leave it empty.
3283
3297
(void )lstrcpynW (plvdi->item .pszText , d.isEnabled ? L" \u25A0 " : L" \u2610 " , plvdi->item .cchTextMax );
3284
3298
}
3285
3299
else if (columnIndices[ColumnID::FIND_TEXT] != -1 && subItem == columnIndices[ColumnID::FIND_TEXT]) {
@@ -3307,7 +3321,6 @@ INT_PTR CALLBACK MultiReplace::run_dlgProc(UINT message, WPARAM wParam, LPARAM l
3307
3321
(void )lstrcpynW (plvdi->item .pszText , d.comments .c_str (), plvdi->item .cchTextMax );
3308
3322
}
3309
3323
else if (columnIndices[ColumnID::DELETE_BUTTON] != -1 && subItem == columnIndices[ColumnID::DELETE_BUTTON]) {
3310
- // If delete is text-based (✖), supply it; else leave empty and draw an image.
3311
3324
(void )lstrcpynW (plvdi->item .pszText , L" \u2716 " , plvdi->item .cchTextMax );
3312
3325
}
3313
3326
else {
@@ -3385,26 +3398,7 @@ INT_PTR CALLBACK MultiReplace::run_dlgProc(UINT message, WPARAM wParam, LPARAM l
3385
3398
performItemAction (_contextMenuClickPoint, ItemAction::Add);
3386
3399
break ;
3387
3400
}
3388
- }
3389
- else if (GetKeyState (VK_MENU) & 0x8000 ) { // If Alt is pressed
3390
- switch (pnkd->wVKey ) {
3391
- case ' E' : // Alt+E for Enable Line
3392
- setSelections (true , ListView_GetSelectedCount (_replaceListView) > 0 );
3393
- break ;
3394
- case ' D' : // Alt+D for Disable Line
3395
- setSelections (false , ListView_GetSelectedCount (_replaceListView) > 0 );
3396
- break ;
3397
- case VK_UP: // Alt+ UP for Push Back
3398
- iItem = ListView_GetNextItem (_replaceListView, -1 , LVNI_SELECTED);
3399
- if (iItem >= 0 ) {
3400
- NMITEMACTIVATE nmia;
3401
- ZeroMemory (&nmia, sizeof (nmia));
3402
- nmia.iItem = iItem;
3403
- handleCopyBack (&nmia);
3404
- }
3405
- break ;
3406
- }
3407
- }
3401
+ }
3408
3402
else {
3409
3403
switch (pnkd->wVKey ) {
3410
3404
case VK_DELETE: // Delete key for deleting selected lines
0 commit comments