Core: Add dedicated BitField template

This commit is contained in:
Thaddeus Crews
2024-08-20 09:50:44 -05:00
parent 7b9c5122fa
commit 0d267e7b1e
46 changed files with 188 additions and 155 deletions

View File

@@ -73,7 +73,7 @@ JoypadLinux::Joypad::~Joypad() {
}
void JoypadLinux::Joypad::reset() {
dpad = 0;
dpad.clear();
fd = -1;
for (int i = 0; i < MAX_ABS; i++) {
abs_map[i] = -1;

View File

@@ -62,7 +62,7 @@ private:
float curr_axis[MAX_ABS];
int key_map[MAX_KEY];
int abs_map[MAX_ABS];
BitField<HatMask> dpad;
BitField<HatMask> dpad = HatMask::CENTER;
int fd = -1;
String devpath;

View File

@@ -144,7 +144,7 @@ class DisplayServerWayland : public DisplayServer {
// are the "take all input thx" windows while the `popup_stack` variable keeps
// track of all the generic floating window concept.
List<WindowID> popup_menu_list;
BitField<MouseButtonMask> last_mouse_monitor_mask;
BitField<MouseButtonMask> last_mouse_monitor_mask = MouseButtonMask::NONE;
String ime_text;
Vector2i ime_selection;

View File

@@ -1779,7 +1779,7 @@ void WaylandThread::_wl_pointer_on_frame(void *data, struct wl_pointer *wl_point
}
if (old_pd.pressed_button_mask != pd.pressed_button_mask) {
BitField<MouseButtonMask> pressed_mask_delta = old_pd.pressed_button_mask ^ pd.pressed_button_mask;
BitField<MouseButtonMask> pressed_mask_delta = old_pd.pressed_button_mask.get_different(pd.pressed_button_mask);
const MouseButton buttons_to_test[] = {
MouseButton::LEFT,
@@ -2746,7 +2746,7 @@ void WaylandThread::_wp_tablet_tool_on_frame(void *data, struct zwp_tablet_tool_
if (old_td.pressed_button_mask != td.pressed_button_mask) {
td.button_time = time;
BitField<MouseButtonMask> pressed_mask_delta = BitField<MouseButtonMask>((int64_t)old_td.pressed_button_mask ^ (int64_t)td.pressed_button_mask);
BitField<MouseButtonMask> pressed_mask_delta = old_td.pressed_button_mask.get_different(td.pressed_button_mask);
for (MouseButton test_button : { MouseButton::LEFT, MouseButton::RIGHT }) {
MouseButtonMask test_button_mask = mouse_button_to_mask(test_button);

View File

@@ -341,7 +341,7 @@ public:
Vector2 relative_motion;
uint32_t relative_motion_time = 0;
BitField<MouseButtonMask> pressed_button_mask;
BitField<MouseButtonMask> pressed_button_mask = MouseButtonMask::NONE;
MouseButton last_button_pressed = MouseButton::NONE;
Point2 last_pressed_position;
@@ -371,7 +371,7 @@ public:
Vector2 tilt;
uint32_t pressure = 0;
BitField<MouseButtonMask> pressed_button_mask;
BitField<MouseButtonMask> pressed_button_mask = MouseButtonMask::NONE;
MouseButton last_button_pressed = MouseButton::NONE;
Point2 last_pressed_position;

View File

@@ -622,7 +622,7 @@ BitField<MouseButtonMask> DisplayServerX11::mouse_get_button_state() const {
int root_x, root_y, win_x, win_y;
unsigned int mask;
if (XQueryPointer(x11_display, XRootWindow(x11_display, i), &root, &child, &root_x, &root_y, &win_x, &win_y, &mask)) {
BitField<MouseButtonMask> last_button_state = 0;
BitField<MouseButtonMask> last_button_state = MouseButtonMask::NONE;
if (mask & Button1Mask) {
last_button_state.set_flag(MouseButtonMask::LEFT);
@@ -643,7 +643,7 @@ BitField<MouseButtonMask> DisplayServerX11::mouse_get_button_state() const {
return last_button_state;
}
}
return 0;
return MouseButtonMask::NONE;
}
void DisplayServerX11::clipboard_set(const String &p_text) {
@@ -5318,7 +5318,7 @@ void DisplayServerX11::process_events() {
pos = Point2i(windows[focused_window_id].size.width / 2, windows[focused_window_id].size.height / 2);
}
BitField<MouseButtonMask> last_button_state = 0;
BitField<MouseButtonMask> last_button_state = MouseButtonMask::NONE;
if (event.xmotion.state & Button1Mask) {
last_button_state.set_flag(MouseButtonMask::LEFT);
}