summaryrefslogtreecommitdiffstats
path: root/client/screen_layer.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/screen_layer.cpp
parenta70110c4e50aad99de7a844bb78eb868768e7841 (diff)
downloadspice-3b51087b3656b111886c7397d0ddd499a96f9e2d.tar.gz
spice-3b51087b3656b111886c7397d0ddd499a96f9e2d.tar.xz
spice-3b51087b3656b111886c7397d0ddd499a96f9e2d.zip
client: interactive screen layer
Diffstat (limited to 'client/screen_layer.cpp')
-rw-r--r--client/screen_layer.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/client/screen_layer.cpp b/client/screen_layer.cpp
index 9940ad86..d4a4435f 100644
--- a/client/screen_layer.cpp
+++ b/client/screen_layer.cpp
@@ -108,6 +108,13 @@ void ScreenLayer::invalidate()
invalidate(_area);
}
+void ScreenLayer::notify_changed()
+{
+ if (_screen) {
+ _screen->on_layer_changed(*this);
+ }
+}
+
void ScreenLayer::set_area(const QRegion& area)
{
Lock lock(_area_lock);
@@ -115,6 +122,7 @@ void ScreenLayer::set_area(const QRegion& area)
region_destroy(&_area);
region_clone(&_area, &area);
invalidate();
+ notify_changed();
}
void ScreenLayer::clear_area()
@@ -122,6 +130,7 @@ void ScreenLayer::clear_area()
Lock lock(_area_lock);
invalidate();
region_clear(&_area);
+ notify_changed();
}
void ScreenLayer::set_rect_area(const Rect& r)
@@ -131,6 +140,7 @@ void ScreenLayer::set_rect_area(const Rect& r)
region_clear(&_area);
region_add(&_area, &r);
invalidate();
+ notify_changed();
}
void ScreenLayer::offset_area(int dx, int dy)
@@ -139,12 +149,14 @@ void ScreenLayer::offset_area(int dx, int dy)
invalidate();
region_offset(&_area, dx, dy);
invalidate();
+ notify_changed();
}
void ScreenLayer::add_rect_area(const Rect& r)
{
Lock lock(_area_lock);
region_add(&_area, &r);
+ notify_changed();
}
void ScreenLayer::remove_rect_area(const Rect& r)
@@ -152,6 +164,7 @@ void ScreenLayer::remove_rect_area(const Rect& r)
Lock lock(_area_lock);
invalidate();
region_remove(&_area, &r);
+ notify_changed();
}
void ScreenLayer::begin_update(QRegion& direct_rgn, QRegion& composit_rgn)
@@ -175,6 +188,12 @@ void ScreenLayer::begin_update(QRegion& direct_rgn, QRegion& composit_rgn)
}
}
+bool ScreenLayer::contains_point(int x, int y)
+{
+ Lock lock(_area_lock);
+ return !!region_contains_point(&_area, x, y);
+}
+
void ScreenLayer::attach_to_screen(Application& applicaion, int screen_id)
{
if (_screen) {