From 3cbb2abee6970588bb1c857d42084e4fe38a1d26 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Sun, 19 May 2024 20:17:07 +0300 Subject: =?UTF-8?q?fixes=20#4428=20(NewStory:=20=D0=B4=D0=BE=D0=B1=D0=B0?= =?UTF-8?q?=D0=B2=D0=B8=D1=82=D1=8C=20=D0=BA=D0=BE=D0=BC=D0=B1=D0=B8=D0=BD?= =?UTF-8?q?=D0=B0=D1=86=D0=B8=D0=B8=20Shift+Home,=20Shift+End,=20Shift+PgU?= =?UTF-8?q?p=20=D0=B8=20Shift+PgDown=D0=B4=D0=BB=D1=8F=20=D0=B2=D1=8B?= =?UTF-8?q?=D0=B4=D0=B5=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F=20=D1=82=D0=B5=D0=BA?= =?UTF-8?q?=D1=81=D1=82=D0=B0=20=D0=B2=20=D0=BE=D0=BA=D0=BD=D0=B5=20=D0=B8?= =?UTF-8?q?=D1=81=D1=82=D0=BE=D1=80=D0=B8=D0=B8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugins/NewStory/src/history_control.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/plugins/NewStory/src/history_control.cpp b/plugins/NewStory/src/history_control.cpp index 6dcbe71252..7ca13da59b 100644 --- a/plugins/NewStory/src/history_control.cpp +++ b/plugins/NewStory/src/history_control.cpp @@ -1315,6 +1315,7 @@ LRESULT CALLBACK NewstoryListWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM return DLGC_WANTMESSAGE; case WM_KEYDOWN: + case WM_KEYUP: { bool isShift = (GetKeyState(VK_SHIFT) & 0x80) != 0; bool isCtrl = (GetKeyState(VK_CONTROL) & 0x80) != 0; @@ -1323,14 +1324,20 @@ LRESULT CALLBACK NewstoryListWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM data->selStart = data->caret; else if (data->bWasShift && !isShift) data->selStart = -1; + data->bWasShift = isShift; + if (msg == WM_KEYUP) + break; + switch (wParam) { case VK_UP: if (g_plugin.bHppCompat) data->EventUp(); else data->LineUp(); + if (isShift) + data->SetSelection(data->scrollTopItem, data->caret); break; case VK_DOWN: @@ -1338,6 +1345,8 @@ LRESULT CALLBACK NewstoryListWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM data->EventDown(); else data->LineDown(); + if (isShift) + data->SetSelection(data->scrollTopItem, data->caret); break; case VK_PRIOR: @@ -1347,6 +1356,8 @@ LRESULT CALLBACK NewstoryListWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM data->EventPageUp(); else data->PageUp(); + if (isShift) + data->SetSelection(data->scrollTopItem, data->caret); break; case VK_NEXT: @@ -1356,14 +1367,20 @@ LRESULT CALLBACK NewstoryListWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM data->EventPageDown(); else data->PageDown(); + if (isShift) + data->SetSelection(data->scrollTopItem, data->caret); break; case VK_HOME: data->ScrollTop(); + if (isShift) + data->SetSelection(0, data->caret); break; case VK_END: data->ScrollBottom(); + if (isShift) + data->SetSelection(data->caret, data->totalCount); break; case VK_F2: -- cgit v1.2.3