Quellcode durchsuchen

PixelPaint: Check modifier on mousemove in LineTool

Previously m_constrain_angle could end up not being reset if the
keyup-event was lost, for example when opening a dialog. Instead check
the modifiers in on_mousemove().
Marcus Nilsson vor 4 Jahren
Ursprung
Commit
e718de454e

+ 3 - 18
Userland/Applications/PixelPaint/LineTool.cpp

@@ -67,11 +67,11 @@ void LineTool::on_mousemove(Layer&, GUI::MouseEvent& layer_event, GUI::MouseEven
     if (m_drawing_button == GUI::MouseButton::None)
         return;
 
-    if (!m_constrain_angle) {
-        m_line_end_position = layer_event.position();
-    } else {
+    if (layer_event.shift()) {
         constexpr auto ANGLE_STEP = M_PI / 8;
         m_line_end_position = constrain_line_angle(m_line_start_position, layer_event.position(), ANGLE_STEP);
+    } else {
+        m_line_end_position = layer_event.position();
     }
     m_editor->update();
 }
@@ -95,21 +95,6 @@ void LineTool::on_keydown(GUI::KeyEvent& event)
         m_editor->update();
         event.accept();
     }
-
-    if (event.key() == Key_Shift) {
-        m_constrain_angle = true;
-        m_editor->update();
-        event.accept();
-    }
-}
-
-void LineTool::on_keyup(GUI::KeyEvent& event)
-{
-    if (event.key() == Key_Shift) {
-        m_constrain_angle = false;
-        m_editor->update();
-        event.accept();
-    }
 }
 
 void LineTool::on_tool_button_contextmenu(GUI::ContextMenuEvent& event)

+ 0 - 2
Userland/Applications/PixelPaint/LineTool.h

@@ -23,7 +23,6 @@ public:
     virtual void on_tool_button_contextmenu(GUI::ContextMenuEvent&) override;
     virtual void on_second_paint(Layer const&, GUI::PaintEvent&) override;
     virtual void on_keydown(GUI::KeyEvent&) override;
-    virtual void on_keyup(GUI::KeyEvent&) override;
 
 private:
     GUI::MouseButton m_drawing_button { GUI::MouseButton::None };
@@ -33,7 +32,6 @@ private:
     RefPtr<GUI::Menu> m_context_menu;
     GUI::ActionGroup m_thickness_actions;
     int m_thickness { 1 };
-    bool m_constrain_angle { false };
 };
 
 }