File 0002-Skip-over-empty-columns-when-doing-keyboard-nav-betw.patch of Package plasma5-desktop.openSUSE_13.2_Update

From e02467941700688fe56b923ab3cd3e3d27fac7d1 Mon Sep 17 00:00:00 2001
From: Eike Hein <hein@kde.org>
Date: Sat, 4 Apr 2015 19:08:27 +0200
Subject: [PATCH 2/4] Skip over empty columns when doing keyboard nav between
 runner matches columns.

Implicity a fix for
BUG:345843
but adds an additional sanity check anyway.
---
 .../package/contents/ui/FullRepresentation.qml     | 40 +++++++++++++++++-----
 .../kicker/package/contents/ui/ItemListView.qml    |  2 +-
 2 files changed, 33 insertions(+), 9 deletions(-)

diff --git a/applets/kicker/package/contents/ui/FullRepresentation.qml b/applets/kicker/package/contents/ui/FullRepresentation.qml
index bdfbfb7df5a88ac0c2744ac9bccf2cd3a6685bfb..7df85da09bc6a37561e677fc4d78f533a2e8c7c3 100644
--- a/applets/kicker/package/contents/ui/FullRepresentation.qml
+++ b/applets/kicker/package/contents/ui/FullRepresentation.qml
@@ -282,20 +282,43 @@ FocusScope {
                         var target = null;
 
                         if (event.key == Qt.Key_Right) {
-                            if (index < (runnerColumnsRepeater.count - 1)) {
-                                target = runnerColumnsRepeater.itemAt(index + 1);
-                            } else {
-                                target = runnerColumnsRepeater.itemAt(0);
+                            var targets = new Array();
+
+                            for (var i = index + 1; i < runnerModel.count; ++i) {
+                                targets[targets.length] = i;
+                            }
+
+                            for (var i = 0; i < index; ++i) {
+                                targets[targets.length] = i;
+                            }
+
+                            for (var i = 0; i < targets.length; ++i) {
+                                if (runnerModel.modelForRow(targets[i]).count) {
+                                    target = runnerColumnsRepeater.itemAt(targets[i]);
+                                    break;
+                                }
                             }
                         } else if (event.key == Qt.Key_Left) {
-                            if (index == 0) {
-                                target = runnerColumnsRepeater.itemAt(0);
-                            } else {
-                                target = runnerColumnsRepeater.itemAt(index - 1);
+                            var targets = new Array();
+
+                            for (var i = index - 1; i >= 0; --i) {
+                                targets[targets.length] = i;
+                            }
+
+                            for (var i = runnerModel.count - 1; i > index; --i) {
+                                targets[targets.length] = i;
+                            }
+
+                            for (var i = 0; i < targets.length; ++i) {
+                                if (runnerModel.modelForRow(targets[i]).count) {
+                                    target = runnerColumnsRepeater.itemAt(targets[i]);
+                                    break;
+                                }
                             }
                         }
 
                         if (target) {
+                            event.accepted = true;
                             currentIndex = -1;
                             target.currentIndex = 0;
                             target.focus = true;
@@ -409,6 +432,7 @@ FocusScope {
                     for (var i = 0; i < runnerModel.count; ++i) {
                         if (runnerModel.modelForRow(i).count) {
                             runnerColumnsRepeater.itemAt(i).currentIndex = 0;
+                            break;
                         }
                     }
                 }
diff --git a/applets/kicker/package/contents/ui/ItemListView.qml b/applets/kicker/package/contents/ui/ItemListView.qml
index a5cdcdc3b4cdb856e002c5cc39a167187c726f32..894d1d015f54a4196ad27bfd1522eb9395ce81df 100644
--- a/applets/kicker/package/contents/ui/ItemListView.qml
+++ b/applets/kicker/package/contents/ui/ItemListView.qml
@@ -168,7 +168,7 @@ FocusScope {
                             return;
                         }
 
-                        if (currentItem != null && !currentItem.hasChildren || !plasmoid.expanded) {
+                        if (currentItem == null || !currentItem.hasChildren || !plasmoid.expanded) {
                             dialogSpawnTimer.stop();
 
                             return;
-- 
2.3.4

openSUSE Build Service is sponsored by