diff --git a/src/designer/src/components/formeditor/formwindow.h b/src/designer/src/components/formeditor/formwindow.h
index d2502f4a7091fdc23ecfb0047f2253fc2d05843d..86027a625fd9c195f44027683ce874090e3f72d4 100644
--- a/src/designer/src/components/formeditor/formwindow.h
+++ b/src/designer/src/components/formeditor/formwindow.h
@@ -70,6 +70,13 @@ class QT_FORMEDITOR_EXPORT FormWindow: public FormWindowBase
     Q_OBJECT
 
 public:
+    enum HandleOperation
+    {
+        NoHandleOperation,
+        ResizeHandleOperation,
+        ChangeLayoutSpanHandleOperation
+    };
+
     explicit FormWindow(FormEditor *core, QWidget *parent = 0, Qt::WindowFlags flags = 0);
     virtual ~FormWindow();
 
@@ -199,6 +206,9 @@ public:
 
     bool eventFilter(QObject *watched, QEvent *event) Q_DECL_OVERRIDE;
 
+    HandleOperation handleOperation() const { return m_handleOperation; }
+    void setHandleOperation(HandleOperation o) { m_handleOperation = o; }
+
 signals:
     void contextMenuRequested(QMenu *menu, QWidget *widget);
 
@@ -354,6 +364,7 @@ private:
     QStringList m_includeHints;
 
     QPoint m_contextMenuPosition;
+    HandleOperation m_handleOperation = NoHandleOperation;
 
 private:
     friend class WidgetEditorTool;
diff --git a/src/designer/src/components/formeditor/formwindowmanager.cpp b/src/designer/src/components/formeditor/formwindowmanager.cpp
index 498160f8a17008ecad65e4ff435b300c53b1fb3c..1650e14507b385afd4a1f006995de477e3e3e969 100644
--- a/src/designer/src/components/formeditor/formwindowmanager.cpp
+++ b/src/designer/src/components/formeditor/formwindowmanager.cpp
@@ -209,6 +209,14 @@ bool FormWindowManager::eventFilter(QObject *o, QEvent *e)
             return true;
         }
         switch (eventType) {
+        case QEvent::LayoutRequest:
+            // QTBUG-61439: Suppress layout request while changing the QGridLayout
+            // span of a QTabWidget, which sends LayoutRequest in resizeEvent().
+            if (fw->handleOperation() == FormWindow::ChangeLayoutSpanHandleOperation) {
+                e->ignore();
+                return true;
+            }
+            break;
 
         case QEvent::WindowActivate: {
             if (fw->parentWidget()->isWindow() && fw->isMainContainer(managedWidget) && activeFormWindow() != fw) {
diff --git a/src/designer/src/components/formeditor/widgetselection.cpp b/src/designer/src/components/formeditor/widgetselection.cpp
index eda77e213110016b7914784047778875cd49c667..fcb54de9211af810fc510e95edf00387ae525e31 100644
--- a/src/designer/src/components/formeditor/widgetselection.cpp
+++ b/src/designer/src/components/formeditor/widgetselection.cpp
@@ -178,6 +178,17 @@ void WidgetHandle::mousePressEvent(QMouseEvent *e)
 
     m_origPressPos = container->mapFromGlobal(e->globalPos());
     m_geom = m_origGeom = m_widget->geometry();
+
+    switch (WidgetSelection::widgetState(m_formWindow->core(), m_widget)) {
+    case WidgetSelection::UnlaidOut:
+    case WidgetSelection::LaidOut:
+        m_formWindow->setHandleOperation(FormWindow::ResizeHandleOperation);
+        break;
+    case WidgetSelection::ManagedGridLayout:
+    case WidgetSelection::ManagedFormLayout:
+        m_formWindow->setHandleOperation(FormWindow::ChangeLayoutSpanHandleOperation);
+        break;
+    }
 }
 
 void WidgetHandle::mouseMoveEvent(QMouseEvent *e)
@@ -326,6 +337,8 @@ void WidgetHandle::mouseMoveEvent(QMouseEvent *e)
 
 void WidgetHandle::mouseReleaseEvent(QMouseEvent *e)
 {
+    m_formWindow->setHandleOperation(FormWindow::NoHandleOperation);
+
     if (e->button() != Qt::LeftButton || !m_active)
         return;