瀏覽代碼

LibGUI: Use AK_ENUM_BITWISE_OPERATORS for the FocusPolicy enum

Brian Gianforcaro 4 年之前
父節點
當前提交
bac0dd5e3d
共有 3 個文件被更改,包括 6 次插入3 次删除
  1. 1 1
      Userland/Libraries/LibGUI/Widget.cpp
  2. 3 0
      Userland/Libraries/LibGUI/Widget.h
  3. 2 2
      Userland/Libraries/LibGUI/Window.cpp

+ 1 - 1
Userland/Libraries/LibGUI/Widget.cpp

@@ -389,7 +389,7 @@ void Widget::handle_mouseup_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);
     mousedown_event(event);
     if (event.button() == MouseButton::Right) {

+ 3 - 0
Userland/Libraries/LibGUI/Widget.h

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

+ 2 - 2
Userland/Libraries/LibGUI/Window.cpp

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