From 85cf754ff86c053c4f7a34b57b1528c0cf655b35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=20Ankarstr=C3=B6m?= Date: Wed, 2 Mar 2022 21:48:41 +0100 Subject: Open episode on Enter. This case cannot be handled by NM_RETURN, as the Return key is handled by IsDialogMessage (in the message loop in main), which sends a WM_GETDLGCODE message to the active control. --- c/defs.h | 1 + c/episodelistview.c | 23 ++++++++++++++--------- c/listview.c | 14 ++++++++++++++ 3 files changed, 29 insertions(+), 9 deletions(-) diff --git a/c/defs.h b/c/defs.h index f5feb3e..01e896d 100644 --- a/c/defs.h +++ b/c/defs.h @@ -16,6 +16,7 @@ void LvSetTheme(HWND, int); /* episodelistview.c */ HWND ElvCreate(); +void ElvEnter(LPLVITEM); LRESULT ElvHandleNotify(LPARAM); void ElvRedraw(void); void ElvSetTop(int); diff --git a/c/episodelistview.c b/c/episodelistview.c index 8ca64d5..cf6f392 100644 --- a/c/episodelistview.c +++ b/c/episodelistview.c @@ -36,6 +36,18 @@ ElvCreate() return HElv; } +void +ElvEnter(LPLVITEM lpLvi) +{ + fid_t f; + term_t t; + F(f); + t = T(1); + PI(t+0, lpLvi->lParam) goto b; + P("local_episodes","open_episode",1,t); +b: Fd(f); +} + LRESULT ElvHandleNotify(LPARAM lParam) { @@ -70,16 +82,8 @@ ElvHandleNotify(LPARAM lParam) break; } case NM_DBLCLK: - { - fid_t f; - term_t t; - F(f); - t = T(1); - PI(t+0, LpLviElvSelection->lParam) goto b; - P("local_episodes","open_episode",1,t); -b: Fd(f); + ElvEnter(LpLviElvSelection); break; - } case NM_RCLICK: { DWORD dwPos; @@ -94,6 +98,7 @@ b: Fd(f); return 0; } + void ElvRedraw() { diff --git a/c/listview.c b/c/listview.c index 7039e89..3025297 100644 --- a/c/listview.c +++ b/c/listview.c @@ -47,6 +47,20 @@ LvProc(HWND hLv, UINT uMsg, WPARAM wParam, LPARAM lParam) return TRUE; } break; + case WM_GETDLGCODE: /* Open episode on Enter. */ + { + LRESULT lResult; + extern HWND HElv; + extern LPLVITEM LpLviElvSelection; + if (hLv != HElv) break; + lResult = CallWindowProc(LvPrevProc, hLv, uMsg, wParam, lParam); + if (lParam && ((MSG *)lParam)->message == WM_KEYDOWN + && ((MSG *)lParam)->wParam == VK_RETURN) { + lResult &= ~DLGC_WANTMESSAGE; + ElvEnter(LpLviElvSelection); + } + return lResult; + } } return CallWindowProc(LvPrevProc, hLv, uMsg, wParam, lParam); -- cgit v1.2.3