Make buttons unpress when the cursor leaves the button rect.

Implement this functionality by adding global cursor tracking.
It's currently only possible for one GWidget per GWindow to track the cursor.
This commit is contained in:
Andreas Kling 2019-01-27 08:48:34 +01:00
commit 069d21ed7f
Notes: sideshowbarker 2024-07-19 15:56:04 +09:00
15 changed files with 105 additions and 7 deletions

View file

@ -4,6 +4,7 @@
#include <SharedGraphics/Rect.h>
#include <SharedGraphics/GraphicsBitmap.h>
#include <AK/AKString.h>
#include <AK/WeakPtr.h>
class GWidget;
@ -48,11 +49,16 @@ public:
void update(const Rect& = Rect());
void set_global_cursor_tracking_widget(GWidget*);
GWidget* global_cursor_tracking_widget() { return m_global_cursor_tracking_widget.ptr(); }
const GWidget* global_cursor_tracking_widget() const { return m_global_cursor_tracking_widget.ptr(); }
private:
RetainPtr<GraphicsBitmap> m_backing;
int m_window_id { -1 };
bool m_is_active { false };
GWidget* m_main_widget { nullptr };
GWidget* m_focused_widget { nullptr };
WeakPtr<GWidget> m_global_cursor_tracking_widget;
};