diff --git a/components/TableView.qml b/components/TableView.qml
index 786e46d40c0a44ec7c348ffe1a4dbb2240a834f1..e293fb4ea5ece6a272f89355e136090911fbe785 100644
--- a/components/TableView.qml
+++ b/components/TableView.qml
@@ -217,17 +217,17 @@ FocusScope{
     }
 
     function decrementCurrentIndex() {
-        tree.blockUpdates = true
-        if (currentIndex > 0) tree.currentIndex = tree.currentIndex - 1
-        wheelarea.verticalValue = contentY/wheelarea.scale
-        tree.blockUpdates = false
+        tree.blockUpdates = true;
+        tree.decrementCurrentIndex();
+        wheelarea.verticalValue = contentY/wheelarea.scale;
+        tree.blockUpdates = false;
     }
 
     function incrementCurrentIndex() {
-        tree.blockUpdates = true
-        if (currentIndex< model.count - 1) tree.currentIndex = tree.currentIndex + 1
-        wheelarea.verticalValue = contentY/wheelarea.scale
-        tree.blockUpdates = false
+        tree.blockUpdates = true;
+        tree.incrementCurrentIndex();
+        wheelarea.verticalValue = contentY/wheelarea.scale;
+        tree.blockUpdates = false;
     }
 
     ListView {
@@ -545,7 +545,7 @@ FocusScope{
         anchors.topMargin: styleitem.style == "mac" ? tableColumn.height : 0
         onValueChanged: {
             if(!tree.blockUpdates)
-                contentY = value
+                time.start()
         }
         anchors.bottomMargin: hscrollbar.visible ? hscrollbar.height :  styleitem.frameoffset
 
@@ -553,6 +553,12 @@ FocusScope{
         Keys.onDownPressed: if (tree.currentIndex< tree.count - 1) tree.currentIndex = tree.currentIndex + 1
     }
 
+    Timer{
+        id:time
+        interval: 0
+        onTriggered:contentY = vscrollbar.value
+    }
+
     QStyleItem {
         z: 2
         anchors.fill: parent
diff --git a/examples/TableViewGallery.qml b/examples/TableViewGallery.qml
index 4a91a6e59478d9848e2e474d09b4909092c8eceb..6da8ab9ab9ff1708e0552e6508ca0c9e8a394b99 100644
--- a/examples/TableViewGallery.qml
+++ b/examples/TableViewGallery.qml
@@ -19,7 +19,7 @@ Rectangle {
 
         ChoiceList {
             id: delegateChooser
-            enabled: frame.current == 3 ? 1 : 0
+            enabled: frame.current == 4 ? 1 : 0
             model: delegatemenu
             anchors.left: parent.left
             anchors.leftMargin: 8
@@ -59,8 +59,8 @@ Rectangle {
     ListModel {
         id: largeModel
         Component.onCompleted: {
-            for (var i=0 ; i< 50 ; ++i)
-                largeModel.append({"name":"Person "+i , "age": Math.round(Math.random()*100), "sex": Math.random()>0.5 ? "Male" : "Female"})
+            for (var i=0 ; i< 5000 ; ++i)
+                largeModel.append({"name":"Person "+i , "age": Math.round(Math.random()*100), "gender": Math.random()>0.5 ? "Male" : "Female"})
         }
     }
 
@@ -194,7 +194,6 @@ Rectangle {
                     model: largeModel
                     anchors.margins: 12
                     anchors.fill: parent
-
                     TableColumn {
                         property: "name"
                         caption: "Name"
@@ -205,7 +204,11 @@ Rectangle {
                         caption: "Age"
                         width: 120
                     }
-
+                    TableColumn {
+                        property: "gender"
+                        caption: "Gender"
+                        width: 120
+                    }
                     frame: frameCheckbox.checked
                     headerVisible: headerCheckbox.checked
                     sortIndicatorVisible: sortableCheckbox.checked