summaryrefslogtreecommitdiffstats
path: root/client/application.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/application.cpp
parenta70110c4e50aad99de7a844bb78eb868768e7841 (diff)
downloadspice-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.cpp37
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;
}