mirror of
https://github.com/SerenityOS/serenity
synced 2024-10-09 01:20:46 +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
|
@ -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…
Reference in a new issue