diff --git a/repos/gems/src/server/wm/decorator_nitpicker.h b/repos/gems/src/server/wm/decorator_nitpicker.h index f917254392..ead0bcdda5 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); }