From 2525432106823ff3df7f6bb2d44c0a376356a1a8 Mon Sep 17 00:00:00 2001
From: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Date: Mon, 21 Feb 2011 09:17:28 +0100
Subject: Designer: Check for 0-spacing when loading grid settings.

Task-number: QTBUG-17542
---
 tools/designer/src/lib/shared/grid.cpp | 20 ++++++++++++++------
 1 file changed, 14 insertions(+), 6 deletions(-)

diff --git a/tools/designer/src/lib/shared/grid.cpp b/tools/designer/src/lib/shared/grid.cpp
index 6add8bd..ba991c7 100644
--- a/tools/designer/src/lib/shared/grid.cpp
+++ b/tools/designer/src/lib/shared/grid.cpp
@@ -89,12 +89,20 @@ Grid::Grid() :
 
 bool Grid::fromVariantMap(const QVariantMap& vm)
 {
-    *this = Grid();
-    valueFromVariantMap(vm, QLatin1String(KEY_VISIBLE), m_visible);
-    valueFromVariantMap(vm, QLatin1String(KEY_SNAPX), m_snapX);
-    valueFromVariantMap(vm, QLatin1String(KEY_SNAPY), m_snapY);
-    valueFromVariantMap(vm, QLatin1String(KEY_DELTAX), m_deltaX);
-    return valueFromVariantMap(vm, QLatin1String(KEY_DELTAY), m_deltaY);
+    Grid grid;
+    bool anyData = valueFromVariantMap(vm, QLatin1String(KEY_VISIBLE), grid.m_visible);
+    anyData |= valueFromVariantMap(vm, QLatin1String(KEY_SNAPX), grid.m_snapX);
+    anyData |= valueFromVariantMap(vm, QLatin1String(KEY_SNAPY), grid.m_snapY);
+    anyData |= valueFromVariantMap(vm, QLatin1String(KEY_DELTAX), grid.m_deltaX);
+    anyData |= valueFromVariantMap(vm, QLatin1String(KEY_DELTAY), grid.m_deltaY);
+    if (!anyData)
+        return false;
+    if (grid.m_deltaX == 0 || grid.m_deltaY == 0) {
+        qWarning("Attempt to set invalid grid with a spacing of 0.");
+        return false;
+    }
+    *this = grid;
+    return true;
 }
 
 QVariantMap Grid::toVariantMap(bool forceKeys) const
-- 
cgit v0.12