1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 01:17:34 +00:00

LibGUI: Use AK_ENUM_BITWISE_OPERATORS for the FocusPolicy enum

This commit is contained in:
Brian Gianforcaro 2021-03-07 03:24:20 -08:00 committed by Andreas Kling
parent 5f6ab77352
commit bac0dd5e3d
3 changed files with 6 additions and 3 deletions

View file

@ -389,7 +389,7 @@ void Widget::handle_mouseup_event(MouseEvent& event)
void Widget::handle_mousedown_event(MouseEvent& event) void Widget::handle_mousedown_event(MouseEvent& event)
{ {
if (((unsigned)focus_policy() & (unsigned)FocusPolicy::ClickFocus)) if (has_flag(focus_policy(), FocusPolicy::ClickFocus))
set_focus(true, FocusSource::Mouse); set_focus(true, FocusSource::Mouse);
mousedown_event(event); mousedown_event(event);
if (event.button() == MouseButton::Right) { if (event.button() == MouseButton::Right) {

View file

@ -26,6 +26,7 @@
#pragma once #pragma once
#include <AK/EnumBits.h>
#include <AK/JsonObject.h> #include <AK/JsonObject.h>
#include <AK/String.h> #include <AK/String.h>
#include <LibCore/Object.h> #include <LibCore/Object.h>
@ -80,6 +81,8 @@ enum class FocusPolicy {
StrongFocus = TabFocus | ClickFocus, StrongFocus = TabFocus | ClickFocus,
}; };
AK_ENUM_BITWISE_OPERATORS(FocusPolicy)
class Widget : public Core::Object { class Widget : public Core::Object {
C_OBJECT(Widget) C_OBJECT(Widget)
public: public:

View file

@ -831,10 +831,10 @@ Vector<Widget*> Window::focusable_widgets(FocusSource source) const
bool widget_accepts_focus = false; bool widget_accepts_focus = false;
switch (source) { switch (source) {
case FocusSource::Keyboard: case FocusSource::Keyboard:
widget_accepts_focus = ((unsigned)widget.focus_policy() & (unsigned)FocusPolicy::TabFocus); widget_accepts_focus = has_flag(widget.focus_policy(), FocusPolicy::TabFocus);
break; break;
case FocusSource::Mouse: case FocusSource::Mouse:
widget_accepts_focus = ((unsigned)widget.focus_policy() & (unsigned)FocusPolicy::ClickFocus); widget_accepts_focus = has_flag(widget.focus_policy(), FocusPolicy::ClickFocus);
break; break;
case FocusSource::Programmatic: case FocusSource::Programmatic:
widget_accepts_focus = widget.focus_policy() != FocusPolicy::NoFocus; widget_accepts_focus = widget.focus_policy() != FocusPolicy::NoFocus;