diff options
author | John Ankarström <john@ankarstrom.se> | 2022-03-02 21:55:57 +0100 |
---|---|---|
committer | John Ankarström <john@ankarstrom.se> | 2022-03-02 21:55:57 +0100 |
commit | 170e048f4ceb11633b62cfcc5b82df6a5aa9c27b (patch) | |
tree | 62ae2a9c4fb672d6cd61d640342381ee3a747937 | |
parent | 85cf754ff86c053c4f7a34b57b1528c0cf655b35 (diff) | |
download | EpisodeBrowser-170e048f4ceb11633b62cfcc5b82df6a5aa9c27b.tar.gz |
Open episode on Enter, but in a better way.
-rw-r--r-- | c/defs.h | 1 | ||||
-rw-r--r-- | c/episodelistview.c | 24 | ||||
-rw-r--r-- | c/listview.c | 15 |
3 files changed, 20 insertions, 20 deletions
@@ -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; } } |