summaryrefslogtreecommitdiffstats
path: root/client/windows/red_window.cpp
diff options
context:
space:
mode:
authorYaniv Kamay <ykamay@redhat.com>2009-11-16 17:50:16 +0200
committerYaniv Kamay <ykamay@redhat.com>2009-11-30 18:03:35 +0200
commit3b51087b3656b111886c7397d0ddd499a96f9e2d (patch)
tree21cdb7b0dc282062bd811f65ee295a7074b58275 /client/windows/red_window.cpp
parenta70110c4e50aad99de7a844bb78eb868768e7841 (diff)
downloadspice-3b51087b3656b111886c7397d0ddd499a96f9e2d.tar.gz
spice-3b51087b3656b111886c7397d0ddd499a96f9e2d.tar.xz
spice-3b51087b3656b111886c7397d0ddd499a96f9e2d.zip
client: interactive screen layer
Diffstat (limited to 'client/windows/red_window.cpp')
-rw-r--r--client/windows/red_window.cpp49
1 files changed, 29 insertions, 20 deletions
diff --git a/client/windows/red_window.cpp b/client/windows/red_window.cpp
index 9365c69d..5c2d2da1 100644
--- a/client/windows/red_window.cpp
+++ b/client/windows/red_window.cpp
@@ -116,12 +116,15 @@ LRESULT CALLBACK RedWindow_p::WindowProc(HWND hWnd, UINT message, WPARAM wParam,
break;
}
case WM_MOUSEMOVE: {
+ Point origin = window->get_origin();
+ int x = LOWORD(lParam) - origin.x;
+ int y = HIWORD(lParam) - origin.y;
+ unsigned int buttons_state = to_red_mouse_state(wParam);
if (!window->_pointer_in_window) {
- window->on_pointer_enter();
+ window->on_pointer_enter(x, y, buttons_state);
+ } else {
+ window->get_listener().on_pointer_motion(x, y, buttons_state);
}
- Point origin = window->get_origin();
- window->get_listener().on_mouse_motion(LOWORD(lParam) - origin.x, HIWORD(lParam) - origin.y,
- to_red_mouse_state(wParam));
break;
}
case WM_MOUSELEAVE:
@@ -134,34 +137,40 @@ LRESULT CALLBACK RedWindow_p::WindowProc(HWND hWnd, UINT message, WPARAM wParam,
window->on_focus_out();
break;
case WM_LBUTTONDOWN:
- window->get_listener().on_button_press(REDC_MOUSE_LBUTTON, to_red_mouse_state(wParam));
+ window->get_listener().on_mouse_button_press(REDC_MOUSE_LBUTTON,
+ to_red_mouse_state(wParam));
break;
case WM_LBUTTONUP:
- window->get_listener().on_button_release(REDC_MOUSE_LBUTTON, to_red_mouse_state(wParam));
+ window->get_listener().on_mouse_button_release(REDC_MOUSE_LBUTTON,
+ to_red_mouse_state(wParam));
break;
case WM_RBUTTONDOWN:
- window->get_listener().on_button_press(REDC_MOUSE_RBUTTON, to_red_mouse_state(wParam));
+ window->get_listener().on_mouse_button_press(REDC_MOUSE_RBUTTON,
+ to_red_mouse_state(wParam));
break;
case WM_RBUTTONUP:
- window->get_listener().on_button_release(REDC_MOUSE_RBUTTON, to_red_mouse_state(wParam));
+ window->get_listener().on_mouse_button_release(REDC_MOUSE_RBUTTON,
+ to_red_mouse_state(wParam));
break;
case WM_MBUTTONDOWN:
- window->get_listener().on_button_press(REDC_MOUSE_MBUTTON, to_red_mouse_state(wParam));
+ window->get_listener().on_mouse_button_press(REDC_MOUSE_MBUTTON,
+ to_red_mouse_state(wParam));
break;
case WM_MBUTTONUP:
- window->get_listener().on_button_release(REDC_MOUSE_MBUTTON, to_red_mouse_state(wParam));
+ window->get_listener().on_mouse_button_release(REDC_MOUSE_MBUTTON,
+ to_red_mouse_state(wParam));
break;
case WM_MOUSEWHEEL:
if (HIWORD(wParam) & 0x8000) {
- window->get_listener().on_button_press(REDC_MOUSE_DBUTTON,
- to_red_mouse_state(wParam));
- window->get_listener().on_button_release(REDC_MOUSE_DBUTTON,
- to_red_mouse_state(wParam));
+ window->get_listener().on_mouse_button_press(REDC_MOUSE_DBUTTON,
+ to_red_mouse_state(wParam));
+ window->get_listener().on_mouse_button_release(REDC_MOUSE_DBUTTON,
+ to_red_mouse_state(wParam));
} else {
- window->get_listener().on_button_press(REDC_MOUSE_UBUTTON,
- to_red_mouse_state(wParam));
- window->get_listener().on_button_release(REDC_MOUSE_UBUTTON,
- to_red_mouse_state(wParam));
+ window->get_listener().on_mouse_button_press(REDC_MOUSE_UBUTTON,
+ to_red_mouse_state(wParam));
+ window->get_listener().on_mouse_button_release(REDC_MOUSE_UBUTTON,
+ to_red_mouse_state(wParam));
}
break;
case WM_SYSKEYDOWN:
@@ -795,7 +804,7 @@ void RedWindow::on_focus_out()
get_listener().on_deactivate();
}
-void RedWindow::on_pointer_enter()
+void RedWindow::on_pointer_enter(int x, int y, unsigned int buttons_state)
{
if (_pointer_in_window) {
return;
@@ -810,7 +819,7 @@ void RedWindow::on_pointer_enter()
while (ShowCursor(FALSE) > -1);
}
_pointer_in_window = true;
- _listener.on_pointer_enter();
+ _listener.on_pointer_enter(x, y, buttons_state);
TRACKMOUSEEVENT tme;
tme.cbSize = sizeof(TRACKMOUSEEVENT);