mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 10:37:45 +00:00
WindowServer: Don't include frame when determining hovered window
We only consider a window "hovered" if its *content area* is hovered.
This commit is contained in:
parent
1537172a6b
commit
82f1ac7390
3 changed files with 9 additions and 3 deletions
|
@ -1149,7 +1149,7 @@ void WindowManager::event(Core::Event& event)
|
||||||
m_previous_event_was_super_keydown = false;
|
m_previous_event_was_super_keydown = false;
|
||||||
|
|
||||||
process_mouse_event(mouse_event);
|
process_mouse_event(mouse_event);
|
||||||
set_hovered_window(m_window_stack.window_at(mouse_event.position()));
|
set_hovered_window(m_window_stack.window_at(mouse_event.position(), WindowStack::IncludeWindowFrame::No));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -38,11 +38,13 @@ void WindowStack::move_to_front(Window& window)
|
||||||
m_windows.append(window);
|
m_windows.append(window);
|
||||||
}
|
}
|
||||||
|
|
||||||
Window* WindowStack::window_at(Gfx::IntPoint const& position) const
|
Window* WindowStack::window_at(Gfx::IntPoint const& position, IncludeWindowFrame include_window_frame) const
|
||||||
{
|
{
|
||||||
auto result = hit_test(position);
|
auto result = hit_test(position);
|
||||||
if (!result.has_value())
|
if (!result.has_value())
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
if (include_window_frame == IncludeWindowFrame::No && result->is_frame_hit)
|
||||||
|
return nullptr;
|
||||||
return result->window;
|
return result->window;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,11 @@ public:
|
||||||
void remove(Window&);
|
void remove(Window&);
|
||||||
void move_to_front(Window&);
|
void move_to_front(Window&);
|
||||||
|
|
||||||
Window* window_at(Gfx::IntPoint const&) const;
|
enum class IncludeWindowFrame {
|
||||||
|
Yes,
|
||||||
|
No,
|
||||||
|
};
|
||||||
|
Window* window_at(Gfx::IntPoint const&, IncludeWindowFrame = IncludeWindowFrame::Yes) const;
|
||||||
|
|
||||||
template<typename Callback>
|
template<typename Callback>
|
||||||
IterationDecision for_each_visible_window_from_back_to_front(Callback);
|
IterationDecision for_each_visible_window_from_back_to_front(Callback);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue