mirror of
https://github.com/SerenityOS/serenity.git
synced 2025-01-24 10:22:05 -05:00
fd4e86460b
Get rid of the goofy MouseClient interface and have the GUI event loop just read mouse data from the character device. The previous approach was awful as it was sending us into random GUI code in the mouse interrupt handler.
43 lines
1.1 KiB
C++
43 lines
1.1 KiB
C++
#pragma once
|
|
|
|
#include "Object.h"
|
|
#include "Rect.h"
|
|
#include "Size.h"
|
|
#include "Keyboard.h"
|
|
#include "PS2MouseDevice.h"
|
|
|
|
class AbstractScreen : public Object, public KeyboardClient {
|
|
public:
|
|
virtual ~AbstractScreen();
|
|
|
|
int width() const { return m_width; }
|
|
int height() const { return m_height; }
|
|
|
|
static AbstractScreen& the();
|
|
|
|
Size size() const { return { width(), height() }; }
|
|
Rect rect() const { return { 0, 0, width(), height() }; }
|
|
|
|
static void initialize();
|
|
|
|
Point cursor_location() const { return m_cursor_location; }
|
|
bool left_mouse_button_pressed() const { return m_left_mouse_button_pressed; }
|
|
bool right_mouse_button_pressed() const { return m_right_mouse_button_pressed; }
|
|
|
|
void on_receive_mouse_data(int dx, int dy, bool left_button, bool right_button);
|
|
|
|
protected:
|
|
AbstractScreen(unsigned width, unsigned height);
|
|
|
|
private:
|
|
// ^KeyboardClient
|
|
virtual void on_key_pressed(Keyboard::Key) final;
|
|
|
|
int m_width { 0 };
|
|
int m_height { 0 };
|
|
|
|
Point m_cursor_location;
|
|
bool m_left_mouse_button_pressed { false };
|
|
bool m_right_mouse_button_pressed { false };
|
|
};
|
|
|