From 170e048f4ceb11633b62cfcc5b82df6a5aa9c27b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=20Ankarstr=C3=B6m?= Date: Wed, 2 Mar 2022 21:55:57 +0100 Subject: Open episode on Enter, but in a better way. --- c/defs.h | 1 - c/episodelistview.c | 24 ++++++++++-------------- c/listview.c | 15 ++++++++++----- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/c/defs.h b/c/defs.h index 01e896d..f5feb3e 100644 --- a/c/defs.h +++ b/c/defs.h @@ -16,7 +16,6 @@ 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 cf6f392..ea1d627 100644 --- a/c/episodelistview.c +++ b/c/episodelistview.c @@ -36,18 +36,6 @@ 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) { @@ -82,8 +70,17 @@ ElvHandleNotify(LPARAM lParam) break; } case NM_DBLCLK: - ElvEnter(LpLviElvSelection); + case NM_RETURN: + { + 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); break; + } case NM_RCLICK: { DWORD dwPos; @@ -98,7 +95,6 @@ ElvHandleNotify(LPARAM lParam) return 0; } - void ElvRedraw() { diff --git a/c/listview.c b/c/listview.c index 3025297..2c24048 100644 --- a/c/listview.c +++ b/c/listview.c @@ -47,18 +47,23 @@ LvProc(HWND hLv, UINT uMsg, WPARAM wParam, LPARAM lParam) return TRUE; } break; - case WM_GETDLGCODE: /* Open episode on Enter. */ + case WM_GETDLGCODE: { LRESULT lResult; extern HWND HElv; extern LPLVITEM LpLviElvSelection; + + /* For the episode list view, the Enter key should not + * be handled by the dialog manager, but instead be sent + * along to the main window procedure, so that it may be + * handled by the NM_RETURN case in ElvHandleNotify. + */ + 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); - } + && ((MSG *)lParam)->wParam == VK_RETURN) + return DLGC_WANTMESSAGE; return lResult; } } -- cgit v1.2.3