diff options
Diffstat (limited to 'redo/table_windows.c')
| -rw-r--r-- | redo/table_windows.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/redo/table_windows.c b/redo/table_windows.c index c0697ef..cd780d3 100644 --- a/redo/table_windows.c +++ b/redo/table_windows.c @@ -6,7 +6,7 @@ // provided for cgo's benefit LPWSTR xWC_LISTVIEW = WC_LISTVIEW; -static void handleMouseMove(HWND hwnd, WPARAM wParam, LPARAM lParam, void *data) +static void handle(HWND hwnd, WPARAM wParam, LPARAM lParam, void (*handler)(void *, int, int), void *data) { LVHITTESTINFO ht; @@ -15,14 +15,14 @@ static void handleMouseMove(HWND hwnd, WPARAM wParam, LPARAM lParam, void *data) ht.pt.x = GET_X_LPARAM(lParam); ht.pt.y = GET_Y_LPARAM(lParam); if (SendMessageW(hwnd, LVM_SUBITEMHITTEST, 0, (LPARAM) (&ht)) == (LRESULT) -1) { - tableSetHot(data, -1, -1); + (*handler)(data, -1, -1); return; // no item } if (ht.flags != LVHT_ONITEMSTATEICON) { - tableSetHot(data, -1, -1); - return; + (*handler)(data, -1, -1); + return; // not on a checkbox } - tableSetHot(data, ht.iItem, ht.iSubItem); + (*handler)(data, ht.iItem, ht.iSubItem); } static LRESULT CALLBACK tableSubProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR id, DWORD_PTR data) @@ -39,7 +39,11 @@ static LRESULT CALLBACK tableSubProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM } return (*fv_DefSubclassProc)(hwnd, uMsg, wParam, lParam); case WM_MOUSEMOVE: - handleMouseMove(hwnd, wParam, lParam, (void *) data); + handle(hwnd, wParam, lParam, tableSetHot, (void *) data); + // and let the list view do its thing + return (*fv_DefSubclassProc)(hwnd, uMsg, wParam, lParam); + case WM_LBUTTONUP: + handle(hwnd, wParam, lParam, tableToggled, (void *) data); // and let the list view do its thing return (*fv_DefSubclassProc)(hwnd, uMsg, wParam, lParam); // see table.autoresize() in table_windows.go for the column autosize policy |
