diff options
author | Yaniv Kamay <ykamay@redhat.com> | 2009-11-16 17:50:16 +0200 |
---|---|---|
committer | Yaniv Kamay <ykamay@redhat.com> | 2009-11-30 18:03:35 +0200 |
commit | 3b51087b3656b111886c7397d0ddd499a96f9e2d (patch) | |
tree | 21cdb7b0dc282062bd811f65ee295a7074b58275 /client/application.cpp | |
parent | a70110c4e50aad99de7a844bb78eb868768e7841 (diff) | |
download | spice-3b51087b3656b111886c7397d0ddd499a96f9e2d.tar.gz spice-3b51087b3656b111886c7397d0ddd499a96f9e2d.tar.xz spice-3b51087b3656b111886c7397d0ddd499a96f9e2d.zip |
client: interactive screen layer
Diffstat (limited to 'client/application.cpp')
-rw-r--r-- | client/application.cpp | 37 |
1 files changed, 25 insertions, 12 deletions
diff --git a/client/application.cpp b/client/application.cpp index db930400..a49576e2 100644 --- a/client/application.cpp +++ b/client/application.cpp @@ -358,6 +358,22 @@ void Application::remove_inputs_handler(InputsHandler& handler) _inputs_handler = &default_inputs_handler; } +void Application::capture_mouse() +{ + if (!_active_screen) { + return; + } + _active_screen->capture_mouse(); +} + +void Application::release_mouse_capture() +{ + if (!_active_screen || !_active_screen->is_mouse_captured()) { + return; + } + _active_screen->relase_mouse(); +} + void Application::abort() { Platform::set_event_listener(NULL); @@ -402,10 +418,10 @@ RedScreen* Application::find_screen(int id) bool Application::release_capture() { unpress_all(); - if (!_active_screen || !_active_screen->is_captured()) { + if (!_active_screen || !_active_screen->is_mouse_captured()) { return false; } - _active_screen->relase_inputs(); + _active_screen->relase_mouse(); return true; } @@ -455,7 +471,7 @@ RedScreen* Application::get_screen(int id) if (capture) { _main_screen->activate(); - _main_screen->capture_inputs(); + _main_screen->capture_mouse(); } } else if (id != 0) { screen->show(false, _main_screen); @@ -489,7 +505,7 @@ void Application::on_screen_destroyed(int id, bool was_captured) position_screens(); if (capture) { _main_screen->activate(); - _main_screen->capture_inputs(); + _main_screen->capture_mouse(); } } } @@ -499,11 +515,6 @@ void Application::on_mouse_motion(int dx, int dy, int buttons_state) _inputs_handler->on_mouse_motion(dx, dy, buttons_state); } -void Application::on_mouse_position(int x, int y, int buttons_state, int display_id) -{ - _inputs_handler->on_mouse_position(x, y, buttons_state, display_id); -} - void Application::on_mouse_down(int button, int buttons_state) { _inputs_handler->on_mouse_down(button, buttons_state); @@ -1084,7 +1095,7 @@ bool Application::rearrange_monitors(RedScreen& screen) if (capture && _main_screen != &screen) { capture = false; _main_screen->activate(); - _main_screen->capture_inputs(); + _main_screen->capture_mouse(); } return capture; } @@ -1194,14 +1205,16 @@ void Application::enter_full_screen() { LOG_INFO(""); _changing_screens = true; - release_capture(); + bool capture = release_capture(); assign_monitors(); hide(); prepare_monitors(); position_screens(); show_full_screen(); _main_screen->activate(); - _main_screen->capture_inputs(); + if (capture) { + _main_screen->capture_mouse(); + } _changing_screens = false; _full_screen = true; } |