WindowServer: Mouse switching between system menu and app menu was broken.

This commit is contained in:
Andreas Kling 2019-04-17 12:06:09 +02:00
parent b77f9a5042
commit 18ef6b111b
2 changed files with 5 additions and 1 deletions

View file

@ -4,6 +4,8 @@
namespace AK {
template<typename T> class OwnPtr;
template<typename T>
class WeakPtr {
friend class Weakable<T>;
@ -43,6 +45,8 @@ public:
WeakLink<T>* leak_link() { return m_link.leak_ref(); }
bool operator==(const OwnPtr<T>& other) const { return ptr() == other.ptr(); }
private:
WeakPtr(RetainPtr<WeakLink<T>>&& link) : m_link(move(link)) { }

View file

@ -369,7 +369,7 @@ void WSWindowManager::pick_new_active_window()
void WSWindowManager::handle_menu_mouse_event(WSMenu& menu, const WSMouseEvent& event)
{
bool is_hover_with_any_menu_open = event.type() == WSMouseEvent::MouseMove && m_current_menu && m_current_menu->menubar();
bool is_hover_with_any_menu_open = event.type() == WSMouseEvent::MouseMove && m_current_menu && (m_current_menu->menubar() || m_current_menu == m_system_menu);
bool is_mousedown_with_left_button = event.type() == WSMouseEvent::MouseDown && event.button() == MouseButton::Left;
bool should_open_menu = &menu != current_menu() && (is_hover_with_any_menu_open || is_mousedown_with_left_button);