Sfoglia il codice sorgente

VisualBuilder: Disallow moving managed widgets with the arrow keys

Andreas Kling 5 anni fa
parent
commit
664dff0581
1 ha cambiato i file con 20 aggiunte e 4 eliminazioni
  1. 20 4
      DevTools/VisualBuilder/VBForm.cpp

+ 20 - 4
DevTools/VisualBuilder/VBForm.cpp

@@ -164,19 +164,35 @@ void VBForm::keydown_event(GKeyEvent& event)
         switch (event.key()) {
         switch (event.key()) {
         case KeyCode::Key_Up:
         case KeyCode::Key_Up:
             update();
             update();
-            for_each_selected_widget([this](auto& widget) { widget.gwidget()->move_by(0, -m_grid_size); });
+            for_each_selected_widget([this](auto& widget) {
+                if (widget.is_in_layout())
+                    return;
+                widget.gwidget()->move_by(0, -m_grid_size);
+            });
             break;
             break;
         case KeyCode::Key_Down:
         case KeyCode::Key_Down:
             update();
             update();
-            for_each_selected_widget([this](auto& widget) { widget.gwidget()->move_by(0, m_grid_size); });
+            for_each_selected_widget([this](auto& widget) {
+                if (widget.is_in_layout())
+                    return;
+                widget.gwidget()->move_by(0, m_grid_size);
+            });
             break;
             break;
         case KeyCode::Key_Left:
         case KeyCode::Key_Left:
             update();
             update();
-            for_each_selected_widget([this](auto& widget) { widget.gwidget()->move_by(-m_grid_size, 0); });
+            for_each_selected_widget([this](auto& widget) {
+                if (widget.is_in_layout())
+                    return;
+                widget.gwidget()->move_by(-m_grid_size, 0);
+            });
             break;
             break;
         case KeyCode::Key_Right:
         case KeyCode::Key_Right:
             update();
             update();
-            for_each_selected_widget([this](auto& widget) { widget.gwidget()->move_by(m_grid_size, 0); });
+            for_each_selected_widget([this](auto& widget) {
+                if (widget.is_in_layout())
+                    return;
+                widget.gwidget()->move_by(m_grid_size, 0);
+            });
             break;
             break;
         }
         }
         return;
         return;