From e0233604fa69da3aeeffd0a80ef67390c4cab320 Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Tue, 29 Sep 2015 19:13:17 +0200 Subject: [PATCH] wm: handling of temporarily hidden views --- repos/gems/src/server/wm/decorator_nitpicker.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/repos/gems/src/server/wm/decorator_nitpicker.h b/repos/gems/src/server/wm/decorator_nitpicker.h index f91725439..ead0bcdda 100644 --- a/repos/gems/src/server/wm/decorator_nitpicker.h +++ b/repos/gems/src/server/wm/decorator_nitpicker.h @@ -136,6 +136,12 @@ class Wm::Decorator_content_registry return _lookup(view_handle).win_id; } + bool is_registered(Nitpicker::Session::View_handle view_handle) const + { + try { lookup(view_handle); return true; } catch (...) { } + return false; + } + /** * Remove entry * @@ -383,6 +389,15 @@ struct Wm::Decorator_nitpicker_session : Genode::Rpc_object void destroy_view(View_handle view) override { + /* + * Reset view geometry when destroying a content view + */ + if (_content_registry.is_registered(view)) { + Nitpicker::Rect rect(Nitpicker::Point(0, 0), Nitpicker::Area(0, 0)); + _nitpicker_session.enqueue(view, rect); + _nitpicker_session.execute(); + } + _nitpicker_session.destroy_view(view); }