Hello community,

here is the log from the commit of package kdebase4-workspace for 
openSUSE:Factory checked in at 2013-07-30 15:58:36
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kdebase4-workspace (Old)
 and      /work/SRC/openSUSE:Factory/.kdebase4-workspace.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "kdebase4-workspace"

Changes:
--------
--- /work/SRC/openSUSE:Factory/kdebase4-workspace/kdebase4-workspace.changes    
2013-07-24 23:38:44.000000000 +0200
+++ 
/work/SRC/openSUSE:Factory/.kdebase4-workspace.new/kdebase4-workspace.changes   
    2013-07-30 16:00:10.000000000 +0200
@@ -1,0 +2,21 @@
+Sat Jul 27 20:00:05 UTC 2013 - [email protected]
+
+- Added patches from upstream KDE/4.11 branch for resolving remaining
+  QML task manager regressions:
+  0001-notify-the-client-when-a-notification-is-dismissed-b.patch
+  0002-Enable-LayoutMirroring.patch
+  0003-Proper-appearance-and-geometry-for-launcher-items.patch
+  0004-Hide-unimplemented-manual-grouping-option.patch
+  0005-Try-to-make-sure-the-group-dialog-stays-within-a-san.patch
+  0006-Make-sure-tasks-are-layouted-before-they-are-shown.patch
+  0007-Fix-bidi-layout-support.patch
+  0008-Restore-correct-index-when-turning-a-task-back-into-.patch
+
+-------------------------------------------------------------------
+Thu Jul 25 22:06:29 UTC 2013 - [email protected]
+
+- Update to 4.10.97
+  * KDE 4.11 RC 2 release
+  * See http://www.kde.org/announcements/announce-4.11-rc2.php
+
+-------------------------------------------------------------------

Old:
----
  kde-workspace-4.10.95.tar.xz

New:
----
  0001-notify-the-client-when-a-notification-is-dismissed-b.patch
  0002-Enable-LayoutMirroring.patch
  0003-Proper-appearance-and-geometry-for-launcher-items.patch
  0004-Hide-unimplemented-manual-grouping-option.patch
  0005-Try-to-make-sure-the-group-dialog-stays-within-a-san.patch
  0006-Make-sure-tasks-are-layouted-before-they-are-shown.patch
  0007-Fix-bidi-layout-support.patch
  0008-Restore-correct-index-when-turning-a-task-back-into-.patch
  kde-workspace-4.10.97.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ kdebase4-workspace.spec ++++++
--- /var/tmp/diff_new_pack.u9ZxKm/_old  2013-07-30 16:00:12.000000000 +0200
+++ /var/tmp/diff_new_pack.u9ZxKm/_new  2013-07-30 16:00:12.000000000 +0200
@@ -23,7 +23,7 @@
 %endif
 
 Name:           kdebase4-workspace
-Version:        4.10.95
+Version:        4.10.97
 Release:        0
 Summary:        The KDE Workspace Components
 License:        GPL-2.0+
@@ -141,6 +141,23 @@
 Patch64:        klipper.patch
 # PATCH-FIX-OPENSUSE helper_actions_syspath.patch -- disables 
org.kde.powerdevil.backlighthelper.syspath policy, until bnc#825256 gets 
resolved
 Patch1000:      helper_actions_syspath.patch
+# Patches 2000+ are from upstream KDE/4.11 branch
+# PATCH-FIX-UPSTREAM 
0001-notify-the-client-when-a-notification-is-dismissed-b.patch
+Patch2000:      0001-notify-the-client-when-a-notification-is-dismissed-b.patch
+# PATCH-FIX-UPSTREAM 0002-Enable-LayoutMirroring.patch
+Patch2001:      0002-Enable-LayoutMirroring.patch
+# PATCH-FIX-UPSTREAM 
0003-Proper-appearance-and-geometry-for-launcher-items.patch
+Patch2002:      0003-Proper-appearance-and-geometry-for-launcher-items.patch
+# PATCH-FIX-UPSTREAM 0004-Hide-unimplemented-manual-grouping-option.patch
+Patch2003:      0004-Hide-unimplemented-manual-grouping-option.patch
+# PATCH-FIX-UPSTREAM 
0005-Try-to-make-sure-the-group-dialog-stays-within-a-san.patch
+Patch2004:      0005-Try-to-make-sure-the-group-dialog-stays-within-a-san.patch
+# PATCH-FIX-UPSTREAM 
0006-Make-sure-tasks-are-layouted-before-they-are-shown.patch
+Patch2005:      0006-Make-sure-tasks-are-layouted-before-they-are-shown.patch
+# PATCH-FIX-UPSTREAM 0007-Fix-bidi-layout-support.patch
+Patch2006:      0007-Fix-bidi-layout-support.patch
+# PATCH-FIX-UPSTREAM 
0008-Restore-correct-index-when-turning-a-task-back-into-.patch
+Patch2007:      0008-Restore-correct-index-when-turning-a-task-back-into-.patch
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 Requires:       %{name}-branding = %{_kde_branding_version}
 Requires:       %{name}-ksysguardd = %{version}
@@ -350,6 +367,14 @@
 %patch63 -p1
 %patch64 -p1
 %patch1000 -p1
+%patch2000 -p1
+%patch2001 -p1
+%patch2002 -p1
+%patch2003 -p1
+%patch2004 -p1
+%patch2005 -p1
+%patch2006 -p1
+%patch2007 -p1
 cp %{SOURCE3} kwin/effects/cube/data/cubecap.png
 
 %build

++++++ 0001-notify-the-client-when-a-notification-is-dismissed-b.patch ++++++
>From 77e9f79f9c7e6f1e633f6ff53ddc751bf5ae3349 Mon Sep 17 00:00:00 2001
From: Marco Martin <[email protected]>
Date: Thu, 25 Jul 2013 12:04:09 +0200
Subject: [PATCH 1/8] notify the client when a notification is dismissed by
 user

---
 .../applets/notifications/contents/ui/LastNotificationPopup.qml     | 1 +
 .../contents/ui/NotificationDelegate/NotificationDelegate.qml       | 1 +
 plasma/generic/applets/notifications/contents/ui/Notifications.qml  | 6 ++++++
 plasma/generic/dataengines/notifications/notificationaction.cpp     | 3 ++-
 plasma/generic/dataengines/notifications/notificationsengine.h      | 5 +++--
 5 files changed, 13 insertions(+), 3 deletions(-)

diff --git 
a/plasma/generic/applets/notifications/contents/ui/LastNotificationPopup.qml 
b/plasma/generic/applets/notifications/contents/ui/LastNotificationPopup.qml
index c41993b..29a6a2d 100644
--- a/plasma/generic/applets/notifications/contents/ui/LastNotificationPopup.qml
+++ b/plasma/generic/applets/notifications/contents/ui/LastNotificationPopup.qml
@@ -340,6 +340,7 @@ PlasmaCore.Dialog {
             onClicked: {
                 lastNotificationPopup.visible = false
                 lastNotificationTimer.running = false
+                
closeNotification(notificationsModel.get((notificationsView.count-1)-notificationsView.currentIndex).source)
                 
notificationsModel.remove((notificationsView.count-1)-notificationsView.currentIndex)
             }
         }
diff --git 
a/plasma/generic/applets/notifications/contents/ui/NotificationDelegate/NotificationDelegate.qml
 
b/plasma/generic/applets/notifications/contents/ui/NotificationDelegate/NotificationDelegate.qml
index a101d87..ca7564f 100644
--- 
a/plasma/generic/applets/notifications/contents/ui/NotificationDelegate/NotificationDelegate.qml
+++ 
b/plasma/generic/applets/notifications/contents/ui/NotificationDelegate/NotificationDelegate.qml
@@ -130,6 +130,7 @@ PlasmaComponents.ListItem {
                         if (notificationsModel.count > 1) {
                             removeAnimation.running = true
                         } else {
+                            closeNotification(model.source)
                             notificationsModel.remove(index)
                         }
                     }
diff --git a/plasma/generic/applets/notifications/contents/ui/Notifications.qml 
b/plasma/generic/applets/notifications/contents/ui/Notifications.qml
index 1140eb7..114ead2 100644
--- a/plasma/generic/applets/notifications/contents/ui/Notifications.qml
+++ b/plasma/generic/applets/notifications/contents/ui/Notifications.qml
@@ -93,6 +93,12 @@ Column {
       service.startOperationCall(op)
     }
 
+    function closeNotification(source) {
+      var service = notificationsSource.serviceForSource(source)
+      var op = service.operationDescription("userClosed")
+      service.startOperationCall(op)
+    }
+
     property QtObject lastNotificationPopup
     Component {
         id: lastNotificationPopupComponent
diff --git a/plasma/generic/dataengines/notifications/notificationaction.cpp 
b/plasma/generic/dataengines/notifications/notificationaction.cpp
index 882e7f8..f35bf19 100644
--- a/plasma/generic/dataengines/notifications/notificationaction.cpp
+++ b/plasma/generic/dataengines/notifications/notificationaction.cpp
@@ -50,7 +50,8 @@ void NotificationAction::start()
         //kDebug() << "invoking action on " << id;
         emit m_engine->ActionInvoked(id, parameters()["actionId"].toString());
     } else if (operationName() == "userClosed") {
-        m_engine->userClosedNotification(id);
+        //userClosedNotification deletes the job, so we have to invoke it 
queued, in this case emitResult() can be called
+        m_engine->metaObject()->invokeMethod(m_engine, 
"userClosedNotification", Qt::QueuedConnection, Q_ARG(uint, id));
     } else if (operationName() == "createNotification") {
         int rv = 
m_engine->createNotification(parameters().value("appName").toString(),
                                               
parameters().value("appIcon").toString(),
diff --git a/plasma/generic/dataengines/notifications/notificationsengine.h 
b/plasma/generic/dataengines/notifications/notificationsengine.h
index 9f048f9..34d12ad 100644
--- a/plasma/generic/dataengines/notifications/notificationsengine.h
+++ b/plasma/generic/dataengines/notifications/notificationsengine.h
@@ -55,10 +55,11 @@ public:
 
     int createNotification(const QString &appName, const QString &appIcon, 
const QString &summary, const QString &body, int timeout, bool configurable, 
const QString &appRealName);
 
-    void userClosedNotification(uint id);
-
     void configureNotification(const QString &appName);
 
+public Q_SLOTS:
+    void userClosedNotification(uint id);
+
 signals:
     void NotificationClosed( uint id, uint reason );
     void ActionInvoked( uint id, const QString& actionKey );
-- 
1.8.3.1

++++++ 0002-Enable-LayoutMirroring.patch ++++++
>From 6b373d596eeedb47146e04d9db5bcaa2d2331400 Mon Sep 17 00:00:00 2001
From: Kai Uwe Broulik <[email protected]>
Date: Thu, 25 Jul 2013 14:56:25 +0200
Subject: [PATCH 2/8] Enable LayoutMirroring Has some issues with the Plasma
 components (slider isn't mirrored, checkbox isn't either) but let's not
 forget about the parts of the world where they write from right to left ;)

---
 plasma/generic/applets/batterymonitor/contents/ui/batterymonitor.qml | 3 +++
 1 file changed, 3 insertions(+)

diff --git 
a/plasma/generic/applets/batterymonitor/contents/ui/batterymonitor.qml 
b/plasma/generic/applets/batterymonitor/contents/ui/batterymonitor.qml
index cddd38e..34a0904 100644
--- a/plasma/generic/applets/batterymonitor/contents/ui/batterymonitor.qml
+++ b/plasma/generic/applets/batterymonitor/contents/ui/batterymonitor.qml
@@ -31,6 +31,9 @@ Item {
 
     property bool show_remaining_time: false
 
+    LayoutMirroring.enabled: true
+    LayoutMirroring.childrenInherit: true
+
     Component.onCompleted: {
         plasmoid.aspectRatioMode = IgnoreAspectRatio
         updateLogic(true);
-- 
1.8.3.1

++++++ 0003-Proper-appearance-and-geometry-for-launcher-items.patch ++++++
>From f21aaf0b375279a3bc00de696e70449452ef082d Mon Sep 17 00:00:00 2001
From: Eike Hein <[email protected]>
Date: Sat, 27 Jul 2013 19:05:10 +0200
Subject: [PATCH 3/8] Proper appearance and geometry for launcher items.

Unlike in the old applet, this has launcher items interact
reasonably with multi-row configurations.

Also optimizes the layout code a bit, avoiding needless
update churn.

BUG:322072
---
 libs/taskmanager/tasksmodel.cpp                    | 14 ++++-
 .../applets/tasks/package/contents/code/layout.js  | 66 ++++++++++++++++++----
 .../applets/tasks/package/contents/ui/Task.qml     | 20 +++++--
 .../applets/tasks/package/contents/ui/main.qml     | 11 +++-
 4 files changed, 95 insertions(+), 16 deletions(-)

diff --git a/libs/taskmanager/tasksmodel.cpp b/libs/taskmanager/tasksmodel.cpp
index d49bcd5..b849528 100644
--- a/libs/taskmanager/tasksmodel.cpp
+++ b/libs/taskmanager/tasksmodel.cpp
@@ -313,7 +313,19 @@ int TasksModel::rowCount(const QModelIndex &parent) const
 
 int TasksModel::launcherCount() const
 {
-    return d->groupManager.data()->launcherCount();
+    if (!d->rootGroup) {
+        return 0;
+    }
+
+    int launcherCount = 0;
+
+    foreach (AbstractGroupableItem *item, d->rootGroup->members()) {
+        if (item->itemType() == LauncherItemType) {
+            ++launcherCount;
+        }
+    }
+
+    return launcherCount;
 }
 
 TasksModelPrivate::TasksModelPrivate(TasksModel *model, GroupManager *gm)
diff --git a/plasma/desktop/applets/tasks/package/contents/code/layout.js 
b/plasma/desktop/applets/tasks/package/contents/code/layout.js
index cb7a1c2..1bf5726 100644
--- a/plasma/desktop/applets/tasks/package/contents/code/layout.js
+++ b/plasma/desktop/applets/tasks/package/contents/code/layout.js
@@ -17,7 +17,6 @@
  *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA .        *
  ***************************************************************************/
 
-
 function horizontalMargins() {
     return taskFrame.margins.left + taskFrame.margins.right;
 }
@@ -26,6 +25,20 @@ function verticalMargins() {
     return taskFrame.margins.top + taskFrame.margins.bottom;
 }
 
+function launcherLayoutTasks() {
+    return Math.round(tasksModel.launcherCount / 
Math.floor(preferredMinWidth() / launcherWidth()));
+}
+
+function launcherLayoutWidthDiff() {
+    return (launcherLayoutTasks() * taskWidth()) - (tasksModel.launcherCount * 
launcherWidth());
+}
+
+function logicalTaskCount() {
+    var count = (tasksModel.count - tasksModel.launcherCount) + 
launcherLayoutTasks();
+
+    return Math.max(tasksModel.count ? 1 : 0, count);
+}
+
 function maxStripes() {
     var length = tasks.vertical ? taskList.width : taskList.height;
     var minimum = tasks.vertical ? preferredMinWidth() : preferredMinHeight();
@@ -35,7 +48,7 @@ function maxStripes() {
 
 function tasksPerStripe() {
     if (tasks.forceStripes) {
-        return Math.ceil(tasksModel.count / maxStripes());
+        return Math.ceil(logicalTaskCount() / maxStripes());
     } else {
         var length = tasks.vertical ? taskList.height : taskList.width;
         var minimum = tasks.vertical ? preferredMinHeight() : 
preferredMinWidth();
@@ -45,7 +58,7 @@ function tasksPerStripe() {
 }
 
 function calculateStripes() {
-    var stripes = tasks.forceStripes ? tasks.maxStripes : 
Math.min(tasks.maxStripes, Math.ceil(tasksModel.count / tasksPerStripe()));
+    var stripes = tasks.forceStripes ? tasks.maxStripes : 
Math.min(tasks.maxStripes, Math.ceil(logicalTaskCount() / tasksPerStripe()));
 
     return Math.min(stripes, maxStripes());
 }
@@ -86,7 +99,7 @@ function preferredMinWidth() {
 }
 
 function preferredMaxWidth() {
-    return preferredMinWidth() * 1.8;
+    return Math.floor(preferredMinWidth() * 1.8);
 }
 
 function preferredMinHeight() {
@@ -101,22 +114,55 @@ function taskWidth() {
     if (tasks.vertical) {
         return Math.floor(taskList.width / calculateStripes());
     } else {
-        if (full() && Math.max(1, tasksModel.count) > tasksPerStripe()) {
-            return Math.floor(taskList.width / Math.ceil(tasksModel.count / 
maxStripes()));
+        if (full() && Math.max(1, logicalTaskCount()) > tasksPerStripe()) {
+            return Math.floor(taskList.width / Math.ceil(logicalTaskCount() / 
maxStripes()));
         } else {
-            return Math.min(preferredMaxWidth(), Math.floor(taskList.width / 
Math.min(tasksModel.count, tasksPerStripe())));
+            return Math.min(preferredMaxWidth(), Math.floor(taskList.width / 
Math.min(logicalTaskCount(), tasksPerStripe())));
         }
     }
 }
 
 function taskHeight() {
     if (tasks.vertical) {
-        if (full() && Math.max(1, tasksModel.count) > tasksPerStripe()) {
-            return Math.floor(taskList.height / Math.ceil(tasksModel.count / 
maxStripes()));
+        if (full() && Math.max(1, logicalTaskCount()) > tasksPerStripe()) {
+            return Math.floor(taskList.height / Math.ceil(logicalTaskCount() / 
maxStripes()));
         } else {
-            return Math.min(preferredMaxHeight(), Math.floor(taskList.height / 
Math.min(tasksModel.count, tasksPerStripe())));
+            return Math.min(preferredMaxHeight(), Math.floor(taskList.height / 
Math.min(logicalTaskCount(), tasksPerStripe())));
         }
     } else {
         return Math.floor(taskList.height / calculateStripes());
     }
 }
+
+function launcherWidth() {
+    return horizontalMargins() + theme.smallIconSize;
+}
+
+function layout(container) {
+    var item;
+    var stripes = calculateStripes();
+    var width = taskWidth();
+    var adjustedWidth = width;
+    var height = taskHeight();
+
+    if (!tasks.vertical && stripes == 1 && tasksModel.count - 
tasksModel.launcherCount)
+    {
+        width += Math.floor(launcherLayoutWidthDiff() / (tasksModel.count - 
tasksModel.launcherCount));
+    }
+
+    for (var i = 0; i < container.count; ++i) {
+        item = container.itemAt(i);
+        adjustedWidth = width;
+
+        if (!tasks.vertical) {
+            if (item.isLauncher) {
+                adjustedWidth = launcherWidth();
+            } else if (stripes > 1 && i == tasksModel.launcherCount) {
+                adjustedWidth += launcherLayoutWidthDiff();
+            }
+        }
+
+        item.width = adjustedWidth;
+        item.height = height;
+    }
+}
diff --git a/plasma/desktop/applets/tasks/package/contents/ui/Task.qml 
b/plasma/desktop/applets/tasks/package/contents/ui/Task.qml
index 70267fb..ca343d7 100644
--- a/plasma/desktop/applets/tasks/package/contents/ui/Task.qml
+++ b/plasma/desktop/applets/tasks/package/contents/ui/Task.qml
@@ -31,8 +31,8 @@ import "../code/tools.js" as TaskTools
 DragArea {
     id: task
 
-    width:  inPopup ? groupDialog.mainItem.width : Layout.taskWidth()
-    height: inPopup ? Layout.preferredMinHeight() : Layout.taskHeight()
+    width: groupDialog.mainItem.width
+    height: Layout.preferredMinHeight()
 
     property int itemIndex: index
     property int itemId: model.Id
@@ -50,6 +50,18 @@ DragArea {
         url: model.LauncherUrl
     }
 
+    onItemIndexChanged: {
+        if (!inPopup && !tasks.vertical && Layout.calculateStripes() > 1) {
+            var newWidth = Layout.taskWidth();
+
+            if (index == tasksModel.launcherCount) {
+                newWidth += Layout.launcherLayoutWidthDiff();
+            }
+
+            width = newWidth;
+        }
+    }
+
     onDemandsAttentionChanged: {
         tasks.itemNeedsAttention(demandsAttention);
     }
@@ -173,7 +185,7 @@ DragArea {
             bottomMargin: taskFrame.margins.bottom
         }
 
-        visible: parent.width - anchors.leftMargin - anchors.rightMargin >= 
(theme.defaultFont.mSize.width * 3)
+        visible: !model.IsLauncher && (parent.width - anchors.leftMargin - 
anchors.rightMargin) >= (theme.defaultFont.mSize.width * 3)
 
         enabled: !model.Minimized
         backgroundPrefix: frame.prefix
@@ -189,7 +201,7 @@ DragArea {
 
             PropertyChanges {
                 target: frame
-                prefix: "normal"
+                visible: false
             }
         },
         State {
diff --git a/plasma/desktop/applets/tasks/package/contents/ui/main.qml 
b/plasma/desktop/applets/tasks/package/contents/ui/main.qml
index a50605f..f61cc4b 100644
--- a/plasma/desktop/applets/tasks/package/contents/ui/main.qml
+++ b/plasma/desktop/applets/tasks/package/contents/ui/main.qml
@@ -138,6 +138,9 @@ Item {
         width: Layout.layoutWidth()
         height: Layout.layoutHeight()
 
+        onWidthChanged: Layout.layout(taskRepeater)
+        onHeightChanged: Layout.layout(taskRepeater)
+
         flow: tasks.vertical ? Flow.TopToBottom : Flow.LeftToRight
 
         onAnimatingChanged: {
@@ -146,7 +149,13 @@ Item {
             }
         }
 
-        Repeater { model: visualModel }
+        Repeater {
+            id: taskRepeater
+
+            model: visualModel
+
+            onCountChanged: Layout.layout(taskRepeater)
+        }
     }
 
     GroupDialog { id: groupDialog }
-- 
1.8.3.1

++++++ 0004-Hide-unimplemented-manual-grouping-option.patch ++++++
>From 3ce46d1658b01507faf698eb806e966b08b70707 Mon Sep 17 00:00:00 2001
From: Eike Hein <[email protected]>
Date: Sat, 27 Jul 2013 19:05:18 +0200
Subject: [PATCH 4/8] Hide unimplemented manual grouping option.

This is a feature regression vs. 4.10, but there's no time
left to implement it now. Fortunately, this had almost no
users anyway since discovering how to work it generally
required a Google search, and even then it was horribly
unfriendly to actually use - we can very likely do much
better next time we take a stab at the idea.
---
 plasma/desktop/applets/tasks/tasks.cpp | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/plasma/desktop/applets/tasks/tasks.cpp 
b/plasma/desktop/applets/tasks/tasks.cpp
index 5acf7ad..c4aef4b 100644
--- a/plasma/desktop/applets/tasks/tasks.cpp
+++ b/plasma/desktop/applets/tasks/tasks.cpp
@@ -397,6 +397,10 @@ void Tasks::configChanged()
                          
static_cast<int>(TaskManager::GroupManager::ProgramGrouping))
         );
     if (groupingStrategy != m_groupManager->groupingStrategy()) {
+        // FIXME: Add back support for manual grouping.
+        if (groupingStrategy == TaskManager::GroupManager::ManualGrouping) {
+            groupingStrategy = TaskManager::GroupManager::ProgramGrouping;
+        }
         m_groupManager->setGroupingStrategy(groupingStrategy);
         changed = true;
     }
@@ -475,7 +479,8 @@ void Tasks::createConfigurationInterface(KConfigDialog 
*parent)
     
m_ui.fillRows->setChecked(m_declarativeWidget->rootObject()->property("forceStripes").toBool());
 
     m_ui.groupingStrategy->addItem(i18n("Do Not 
Group"),QVariant(TaskManager::GroupManager::NoGrouping));
-    
m_ui.groupingStrategy->addItem(i18n("Manually"),QVariant(TaskManager::GroupManager::ManualGrouping));
+    // FIXME: Add back support for manual grouping.
+    // 
m_ui.groupingStrategy->addItem(i18n("Manually"),QVariant(TaskManager::GroupManager::ManualGrouping));
     m_ui.groupingStrategy->addItem(i18n("By Program 
Name"),QVariant(TaskManager::GroupManager::ProgramGrouping));
 
     connect(m_ui.groupingStrategy, SIGNAL(currentIndexChanged(int)), this, 
SLOT(dialogGroupingChanged(int)));
@@ -484,11 +489,13 @@ void Tasks::createConfigurationInterface(KConfigDialog 
*parent)
         case TaskManager::GroupManager::NoGrouping:
             m_ui.groupingStrategy->setCurrentIndex(0);
             break;
+/* FIXME: Add back support for manual grouping.
         case TaskManager::GroupManager::ManualGrouping:
             m_ui.groupingStrategy->setCurrentIndex(1);
             break;
+*/
         case TaskManager::GroupManager::ProgramGrouping:
-            m_ui.groupingStrategy->setCurrentIndex(2);
+            m_ui.groupingStrategy->setCurrentIndex(1);
             break;
         default:
              m_ui.groupingStrategy->setCurrentIndex(-1);
-- 
1.8.3.1

++++++ 0005-Try-to-make-sure-the-group-dialog-stays-within-a-san.patch ++++++
>From 5dd8352f2e8a579034b91c2f6b269df29ffc85cd Mon Sep 17 00:00:00 2001
From: Eike Hein <[email protected]>
Date: Sat, 27 Jul 2013 19:05:23 +0200
Subject: [PATCH 5/8] Try to make sure the group dialog stays within a sane
 width limit.

The approach taken is "behave reasonably on 640x480 and above" by
clipping the bounding box of the task items to the max() of that
minimum supported resolution (taking dialog margins and, if vert-
ically oriented, a likely panel into account) and the applet's
width.

A perfect impementation would figure out the dimensions of the
work area (i.e. screen sans relevant struts) and clip to that,
but knowing how much C++ that takes to do correctly on multi-
head (as Yakuake does it) and seeing how the goal is to have a QML
task manager, I don't feel that's maintainable for now. Let's look
into improving PlasmaCore.Dialog in libplasma2 instead to help
with avoiding too unreasonably large dialogs instead, or perhaps
Qt Quick 2 will evolve a helper. There's a TODO in there for now.

On the flip side, this actually behaves better than the old
applet anyway, which had rather more unreasonable popup sizing ...

BUG:322248
---
 plasma/desktop/applets/tasks/package/contents/ui/GroupDialog.qml | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/plasma/desktop/applets/tasks/package/contents/ui/GroupDialog.qml 
b/plasma/desktop/applets/tasks/package/contents/ui/GroupDialog.qml
index 5292415..411b276 100644
--- a/plasma/desktop/applets/tasks/package/contents/ui/GroupDialog.qml
+++ b/plasma/desktop/applets/tasks/package/contents/ui/GroupDialog.qml
@@ -97,7 +97,10 @@ PlasmaCore.Dialog {
                 task.textWidthChanged.connect(updateSize);
             }
 
-            mainItem.width = maxWidth + Layout.horizontalMargins() + 
theme.smallIconSize + 6;
+            maxWidth += Layout.horizontalMargins() + theme.smallIconSize + 6;
+
+            // TODO: Properly derive limits from work area size (screen size 
sans struts).
+            mainItem.width = Math.min(maxWidth, (tasks.vertical ? 640 - 
tasks.width : Math.max(tasks.width, 640)) - 20);
             mainItem.height = groupRepeater.count * 
Layout.preferredMinHeight();
         }
     }
-- 
1.8.3.1

++++++ 0006-Make-sure-tasks-are-layouted-before-they-are-shown.patch ++++++
>From 1f423b9d0e53b5b351c09ae77ffbc6ee64bad384 Mon Sep 17 00:00:00 2001
From: Eike Hein <[email protected]>
Date: Sat, 27 Jul 2013 19:05:29 +0200
Subject: [PATCH 6/8] Make sure tasks are layouted before they are shown.

Avoids reflow occuring after a task is already shown, causing
it to animate from outside the viewport into the final location.
---
 plasma/desktop/applets/tasks/package/contents/code/layout.js     | 1 +
 plasma/desktop/applets/tasks/package/contents/ui/GroupDialog.qml | 5 ++++-
 plasma/desktop/applets/tasks/package/contents/ui/Task.qml        | 2 ++
 3 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/plasma/desktop/applets/tasks/package/contents/code/layout.js 
b/plasma/desktop/applets/tasks/package/contents/code/layout.js
index 1bf5726..7b18798 100644
--- a/plasma/desktop/applets/tasks/package/contents/code/layout.js
+++ b/plasma/desktop/applets/tasks/package/contents/code/layout.js
@@ -164,5 +164,6 @@ function layout(container) {
 
         item.width = adjustedWidth;
         item.height = height;
+        item.visible = true;
     }
 }
diff --git a/plasma/desktop/applets/tasks/package/contents/ui/GroupDialog.qml 
b/plasma/desktop/applets/tasks/package/contents/ui/GroupDialog.qml
index 411b276..7e13164 100644
--- a/plasma/desktop/applets/tasks/package/contents/ui/GroupDialog.qml
+++ b/plasma/desktop/applets/tasks/package/contents/ui/GroupDialog.qml
@@ -107,6 +107,9 @@ PlasmaCore.Dialog {
 
     VisualDataModel {
         id: groupFilter
-        delegate: Task { inPopup: true }
+        delegate: Task {
+            visible: true
+            inPopup: true
+        }
     }
 }
diff --git a/plasma/desktop/applets/tasks/package/contents/ui/Task.qml 
b/plasma/desktop/applets/tasks/package/contents/ui/Task.qml
index ca343d7..2084ab0 100644
--- a/plasma/desktop/applets/tasks/package/contents/ui/Task.qml
+++ b/plasma/desktop/applets/tasks/package/contents/ui/Task.qml
@@ -34,6 +34,8 @@ DragArea {
     width: groupDialog.mainItem.width
     height: Layout.preferredMinHeight()
 
+    visible: false
+
     property int itemIndex: index
     property int itemId: model.Id
     property bool inPopup: false
-- 
1.8.3.1

++++++ 0007-Fix-bidi-layout-support.patch ++++++
>From 6409a1a9ecf7e9dcd3d46f7a433448f200927b55 Mon Sep 17 00:00:00 2001
From: Eike Hein <[email protected]>
Date: Sat, 27 Jul 2013 19:05:33 +0200
Subject: [PATCH 7/8] Fix bidi layout support.

CCBUG:321889
---
 plasma/desktop/applets/tasks/package/contents/ui/Task.qml     | 3 +++
 plasma/desktop/applets/tasks/package/contents/ui/TaskList.qml | 2 ++
 2 files changed, 5 insertions(+)

diff --git a/plasma/desktop/applets/tasks/package/contents/ui/Task.qml 
b/plasma/desktop/applets/tasks/package/contents/ui/Task.qml
index 2084ab0..b764ca1 100644
--- a/plasma/desktop/applets/tasks/package/contents/ui/Task.qml
+++ b/plasma/desktop/applets/tasks/package/contents/ui/Task.qml
@@ -36,6 +36,9 @@ DragArea {
 
     visible: false
 
+    LayoutMirroring.enabled: (Qt.application.layoutDirection == Qt.RightToLeft)
+    LayoutMirroring.childrenInherit: (Qt.application.layoutDirection == 
Qt.RightToLeft)
+
     property int itemIndex: index
     property int itemId: model.Id
     property bool inPopup: false
diff --git a/plasma/desktop/applets/tasks/package/contents/ui/TaskList.qml 
b/plasma/desktop/applets/tasks/package/contents/ui/TaskList.qml
index 6429844..2a6d26c 100644
--- a/plasma/desktop/applets/tasks/package/contents/ui/TaskList.qml
+++ b/plasma/desktop/applets/tasks/package/contents/ui/TaskList.qml
@@ -22,6 +22,8 @@ import QtQuick 1.1
 Flow {
     property bool animating: false
 
+    layoutDirection: Qt.application.layoutDirection
+
     move: Transition {
         SequentialAnimation {
             PropertyAction { target: taskList; property: "animating"; value: 
true }
-- 
1.8.3.1

++++++ 0008-Restore-correct-index-when-turning-a-task-back-into-.patch ++++++
>From d5038238e8d5efda23aa30355f75efefe1724a3c Mon Sep 17 00:00:00 2001
From: Eike Hein <[email protected]>
Date: Sat, 27 Jul 2013 19:05:38 +0200
Subject: [PATCH 8/8] Restore correct index when turning a task back into a
 launcher.

---
 libs/taskmanager/taskgroup.cpp | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)

diff --git a/libs/taskmanager/taskgroup.cpp b/libs/taskmanager/taskgroup.cpp
index 8b3f777..c9d063e 100644
--- a/libs/taskmanager/taskgroup.cpp
+++ b/libs/taskmanager/taskgroup.cpp
@@ -209,11 +209,17 @@ void TaskGroup::add(AbstractGroupableItem *item, int 
insertIndex)
         index = d->members.count();
         if (d->groupManager->separateLaunchers()) {
             if (item->itemType() == LauncherItemType) {
-                // insert launchers together at the head of the list, but still
-                // in the order they appear
-                for (index = 0; index < d->members.count(); ++index) {
-                    if (d->members.at(index)->itemType() != LauncherItemType) {
-                        break;
+                KUrl lUrl = item->launcherUrl();
+                int urlIdx = d->groupManager->launcherIndex(lUrl);
+                if (urlIdx >= 0) {
+                    index = urlIdx;
+                } else {
+                    // insert launchers together at the head of the list, but 
still
+                    // in the order they appear
+                    for (index = 0; index < d->members.count(); ++index) {
+                        if (d->members.at(index)->itemType() != 
LauncherItemType) {
+                            break;
+                        }
                     }
                 }
             }
-- 
1.8.3.1

++++++ helper_actions_syspath.patch ++++++
--- /var/tmp/diff_new_pack.u9ZxKm/_old  2013-07-30 16:00:12.000000000 +0200
+++ /var/tmp/diff_new_pack.u9ZxKm/_new  2013-07-30 16:00:12.000000000 +0200
@@ -1,16 +1,16 @@
-diff -urNB 
kde-workspace-4.10.90/powerdevil/daemon/backends/upower/backlight_helper_actions.actions
 
kde-workspace-4.10.90.new/powerdevil/daemon/backends/upower/backlight_helper_actions.actions
---- 
kde-workspace-4.10.90/powerdevil/daemon/backends/upower/backlight_helper_actions.actions
   2013-06-25 20:20:02.000000000 +0200
-+++ 
kde-workspace-4.10.90.new/powerdevil/daemon/backends/upower/backlight_helper_actions.actions
       2013-07-03 20:56:32.244674680 +0200
+diff -urNB 
kde-workspace-4.10.97.orig/powerdevil/daemon/backends/upower/backlight_helper_actions.actions
 
kde-workspace-4.10.97/powerdevil/daemon/backends/upower/backlight_helper_actions.actions
+--- 
kde-workspace-4.10.97.orig/powerdevil/daemon/backends/upower/backlight_helper_actions.actions
      2013-07-23 10:58:46.000000000 +0200
++++ 
kde-workspace-4.10.97/powerdevil/daemon/backends/upower/backlight_helper_actions.actions
   2013-07-26 02:36:59.408289547 +0200
 @@ -289,8 +289,6 @@
  Description[zh_TW]=系統政策不允許您設定亮度。
  Policy=yes
  
 -[org.kde.powerdevil.backlighthelper.syspath]
 -Name=Get syspath
+ Name[bs]=Dobavi sistemsku stazu
  Name[ca]=Obtén el «syspath»
  Name[cs]=Získat syspath
- Name[es]=Obtener ruta del sistema
-@@ -348,5 +346,3 @@
+@@ -352,5 +350,3 @@
  Description[x-test]=xxSystem policies prevent you from getting the syspathxx
  Description[zh_CN]=系统安全策略不允许获取系统路径
  Description[zh_TW]=系統政策不允許您取得系統路徑

++++++ kde-workspace-4.10.95.tar.xz -> kde-workspace-4.10.97.tar.xz ++++++
/work/SRC/openSUSE:Factory/kdebase4-workspace/kde-workspace-4.10.95.tar.xz 
/work/SRC/openSUSE:Factory/.kdebase4-workspace.new/kde-workspace-4.10.97.tar.xz 
differ: char 27, line 1



-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to