mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-18 13:26:27 +00:00
decorator: fix window-stacking glitch
This is a follow-up commit to "gui_session: manage view ID at the client side", which missed to invalidate the neighbor view of a window but instead wrongly assigned the (now always valid) view ID 0 as neighbor. In situations where a window disappears and re-appears (e.g., repeatedly launching testnit in the wm.run scenario), the new window could not always be topped. Issue #5242
This commit is contained in:
parent
f147a1220e
commit
e83ace4242
@ -141,6 +141,8 @@ class Decorator::Window_base : private Genode::List_model<Window_base>::Element
|
||||
_stacked = true;
|
||||
}
|
||||
|
||||
void forget_neighbor() { _neighbor.destruct(); }
|
||||
|
||||
bool back_most() const
|
||||
{
|
||||
return _stacked && !_neighbor.constructed();
|
||||
|
@ -257,7 +257,7 @@ void Decorator::Window_stack::update_model(Genode::Xml_node root_node,
|
||||
reversed.remove(back_most);
|
||||
Window_base &window = *back_most->object();
|
||||
stack_back_most_window(window);
|
||||
window.stacking_neighbor(Gui::View_id());
|
||||
window.forget_neighbor();
|
||||
|
||||
Window_base *neighbor = &window;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user