forked from enlightenment/efl
ecore_win: fix the incorrect mouse cursor position.
Ecore_Event_Mouse_* x, y values are relative to the current window position as well as the root x, y, values are relative to the root window. previously, x,y is started from the root window and root x, y values are invalid. fix them @fix
This commit is contained in:
parent
08238de3e0
commit
1f1542f824
|
@ -1421,10 +1421,13 @@ _ecore_win32_event_handle_button_press(Ecore_Win32_Callback_Data *msg,
|
|||
int button)
|
||||
{
|
||||
Ecore_Win32_Window *window;
|
||||
RECT rect = { 0, 0, 0, 0 };
|
||||
|
||||
INF("mouse button pressed");
|
||||
|
||||
window = (Ecore_Win32_Window *)GetWindowLongPtr(msg->window, GWLP_USERDATA);
|
||||
if (!GetWindowRect(window->window, &rect))
|
||||
ERR("GetWindowRect() failed!");
|
||||
|
||||
if (button > 3)
|
||||
{
|
||||
|
@ -1438,8 +1441,10 @@ _ecore_win32_event_handle_button_press(Ecore_Win32_Callback_Data *msg,
|
|||
e->direction = 0;
|
||||
/* wheel delta is positive or negative, never 0 */
|
||||
e->z = GET_WHEEL_DELTA_WPARAM(msg->window_param) > 0 ? -1 : 1;
|
||||
e->x = GET_X_LPARAM(msg->data_param);
|
||||
e->y = GET_Y_LPARAM(msg->data_param);
|
||||
e->x = GET_X_LPARAM(msg->data_param) - rect.left;
|
||||
e->y = GET_Y_LPARAM(msg->data_param) - rect.top;
|
||||
e->root.x = rect.left;
|
||||
e->root.y = rect.top;
|
||||
e->timestamp = msg->timestamp;
|
||||
e->modifiers = _ecore_win32_modifiers_get();
|
||||
|
||||
|
@ -1458,8 +1463,10 @@ _ecore_win32_event_handle_button_press(Ecore_Win32_Callback_Data *msg,
|
|||
|
||||
e->window = (Ecore_Window)window;
|
||||
e->event_window = e->window;
|
||||
e->x = GET_X_LPARAM(msg->data_param);
|
||||
e->y = GET_Y_LPARAM(msg->data_param);
|
||||
e->x = GET_X_LPARAM(msg->data_param) - rect.left;
|
||||
e->y = GET_Y_LPARAM(msg->data_param) - rect.top;
|
||||
e->root.x = rect.left;
|
||||
e->root.y = rect.top;
|
||||
e->timestamp = msg->timestamp;
|
||||
e->modifiers = _ecore_win32_modifiers_get();
|
||||
|
||||
|
@ -1486,8 +1493,10 @@ _ecore_win32_event_handle_button_press(Ecore_Win32_Callback_Data *msg,
|
|||
e->window = (Ecore_Window)window;
|
||||
e->event_window = e->window;
|
||||
e->buttons = button;
|
||||
e->x = GET_X_LPARAM(msg->data_param);
|
||||
e->y = GET_Y_LPARAM(msg->data_param);
|
||||
e->x = GET_X_LPARAM(msg->data_param) - rect.left;
|
||||
e->y = GET_Y_LPARAM(msg->data_param) - rect.top;
|
||||
e->root.x = rect.left;
|
||||
e->root.y = rect.top;
|
||||
e->timestamp = msg->timestamp;
|
||||
e->modifiers = _ecore_win32_modifiers_get();
|
||||
|
||||
|
|
Loading…
Reference in New Issue