mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-23 23:42:32 +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;
|
_stacked = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void forget_neighbor() { _neighbor.destruct(); }
|
||||||
|
|
||||||
bool back_most() const
|
bool back_most() const
|
||||||
{
|
{
|
||||||
return _stacked && !_neighbor.constructed();
|
return _stacked && !_neighbor.constructed();
|
||||||
|
@ -257,7 +257,7 @@ void Decorator::Window_stack::update_model(Genode::Xml_node root_node,
|
|||||||
reversed.remove(back_most);
|
reversed.remove(back_most);
|
||||||
Window_base &window = *back_most->object();
|
Window_base &window = *back_most->object();
|
||||||
stack_back_most_window(window);
|
stack_back_most_window(window);
|
||||||
window.stacking_neighbor(Gui::View_id());
|
window.forget_neighbor();
|
||||||
|
|
||||||
Window_base *neighbor = &window;
|
Window_base *neighbor = &window;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user