WindowServer: Don't allow focusing unfocusable windows after closing
This commit is contained in:
parent
df613775b6
commit
e1b82e4e43
|
@ -538,6 +538,7 @@ void WindowServer::on_mouse_scroll(LibInput::MouseScrollEvent event)
|
||||||
|
|
||||||
void WindowServer::set_focused_window(BAN::RefPtr<Window> window)
|
void WindowServer::set_focused_window(BAN::RefPtr<Window> window)
|
||||||
{
|
{
|
||||||
|
ASSERT(window->get_attributes().focusable);
|
||||||
if (m_focused_window == window)
|
if (m_focused_window == window)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -1019,8 +1020,14 @@ void WindowServer::remove_client_fd(int fd)
|
||||||
if (window == m_focused_window)
|
if (window == m_focused_window)
|
||||||
{
|
{
|
||||||
m_focused_window = nullptr;
|
m_focused_window = nullptr;
|
||||||
if (!m_client_windows.empty())
|
for (size_t j = m_client_windows.size(); j > 0; j--)
|
||||||
set_focused_window(m_client_windows.back());
|
{
|
||||||
|
auto& client_window = m_client_windows[j - 1];
|
||||||
|
if (!client_window->get_attributes().focusable)
|
||||||
|
continue;
|
||||||
|
set_focused_window(client_window);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue