| 96 | } |
| 97 | |
| 98 | INT_PTR SuggestionMenuButton::run_dlg_proc(UINT message, WPARAM w_param, |
| 99 | LPARAM l_param) { |
| 100 | POINT p; |
| 101 | BITMAP bmp; |
| 102 | int id_img; |
| 103 | PAINTSTRUCT ps; |
| 104 | |
| 105 | switch (message) { |
| 106 | case WM_INITDIALOG: |
| 107 | |
| 108 | display(false); |
| 109 | return 0; |
| 110 | |
| 111 | case WM_MOUSEMOVE: |
| 112 | m_state_hovered = true; |
| 113 | reg_msg(_hSelf, MOUSELEAVE); |
| 114 | RedrawWindow(_hSelf, nullptr, nullptr, RDW_UPDATENOW | RDW_INVALIDATE); |
| 115 | return 0; |
| 116 | |
| 117 | case WM_MOUSEHOVER: |
| 118 | return 0; |
| 119 | |
| 120 | case WM_LBUTTONDOWN: |
| 121 | m_state_pressed = true; |
| 122 | RedrawWindow(_hSelf, nullptr, nullptr, RDW_UPDATENOW | RDW_INVALIDATE); |
| 123 | return 0; |
| 124 | |
| 125 | case WM_LBUTTONUP: |
| 126 | if (!m_state_pressed) |
| 127 | return 0; |
| 128 | show_suggestion_menu(); |
| 129 | return 0; |
| 130 | |
| 131 | case WM_MOUSEWHEEL: |
| 132 | ShowWindow(_hSelf, SW_HIDE); |
| 133 | { |
| 134 | ACTIVE_VIEW_BLOCK(m_npp); |
| 135 | PostMessage(m_npp.get_view_hwnd(), message, w_param, |
| 136 | l_param); |
| 137 | } |
| 138 | return 0; |
| 139 | |
| 140 | case WM_PAINT: { |
| 141 | if (!isVisible()) |
| 142 | return 0; |
| 143 | |
| 144 | id_img = IDR_DOWNARROW; |
| 145 | if (m_state_pressed || m_state_menu) |
| 146 | id_img = IDR_DOWNARROW_PUSH; |
| 147 | else if (m_state_hovered) |
| 148 | id_img = IDR_DOWNARROW_HOVER; |
| 149 | |
| 150 | HDC dc = BeginPaint(_hSelf, &ps); |
| 151 | HDC hdc_memory = ::CreateCompatibleDC(dc); |
| 152 | HBITMAP h_bmp = LoadBitmap(_hInst, MAKEINTRESOURCE(id_img)); |
| 153 | GetObject(h_bmp, sizeof(bmp), &bmp); |
| 154 | auto h_old_bitmap = static_cast<HBITMAP>(SelectObject(hdc_memory, h_bmp)); |
| 155 | SetStretchBltMode(dc, HALFTONE); |
nothing calls this directly
no test coverage detected