mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-04-24 05:25:13 +00:00
WindowServer: Cancel any ongoing input tracking when a menu pops up
When the user opens a context menu by right-clicking on something, we now immediately stop sending mouse events to whoever was doing active input window tracking before. There are probably more situations where we should do this, and maybe there's also a more generic way to express it, but this works for now.
This commit is contained in:
parent
4330046aff
commit
7aa2acefd0
Notes:
sideshowbarker
2024-07-19 06:48:36 +09:00
Author: https://github.com/awesomekling Commit: https://github.com/SerenityOS/serenity/commit/7aa2acefd02
3 changed files with 13 additions and 0 deletions
|
@ -551,6 +551,8 @@ void Menu::popup(const Gfx::Point& position, bool is_submenu)
|
|||
window.move_to(adjusted_pos);
|
||||
window.set_visible(true);
|
||||
MenuManager::the().set_current_menu(this, is_submenu);
|
||||
|
||||
WindowManager::the().did_popup_a_menu({});
|
||||
}
|
||||
|
||||
bool Menu::is_menu_ancestor_of(const Menu& other) const
|
||||
|
|
|
@ -1314,4 +1314,13 @@ bool WindowManager::update_theme(String theme_path, String theme_name)
|
|||
return true;
|
||||
}
|
||||
|
||||
void WindowManager::did_popup_a_menu(Badge<Menu>)
|
||||
{
|
||||
// Clear any ongoing input gesture
|
||||
if (!m_active_input_window)
|
||||
return;
|
||||
m_active_input_window->set_automatic_cursor_tracking_enabled(false);
|
||||
m_active_input_window = nullptr;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -173,6 +173,8 @@ public:
|
|||
void set_hovered_window(Window*);
|
||||
void deliver_mouse_event(Window& window, MouseEvent& event);
|
||||
|
||||
void did_popup_a_menu(Badge<Menu>);
|
||||
|
||||
private:
|
||||
NonnullRefPtr<Cursor> get_cursor(const String& name);
|
||||
NonnullRefPtr<Cursor> get_cursor(const String& name, const Gfx::Point& hotspot);
|
||||
|
|
Loading…
Add table
Reference in a new issue