rpms/kdebase-workspace/devel kdebase-workspace-4.0.1-kde#155362.patch, NONE, 1.1 kdebase-workspace.spec, 1.28, 1.29 kdebase-workspace-4.0.0-kde#155362.patch, 1.1, NONE

Kevin Kofler (kkofler) fedora-extras-commits at redhat.com
Fri Feb 1 22:01:18 UTC 2008


Author: kkofler

Update of /cvs/pkgs/rpms/kdebase-workspace/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv20563/devel

Modified Files:
	kdebase-workspace.spec 
Added Files:
	kdebase-workspace-4.0.1-kde#155362.patch 
Removed Files:
	kdebase-workspace-4.0.0-kde#155362.patch 
Log Message:
* Fri Feb 01 2008 Kevin Kofler <Kevin at tigcc.ticalc.org> 4.0.1-2
- update kde#155362 (simple menu) patch for 4.0.1 (thanks to Jan Mette)

kdebase-workspace-4.0.1-kde#155362.patch:

--- NEW FILE kdebase-workspace-4.0.1-kde#155362.patch ---
diff -Naur kdebase-workspace-4.0.1.orig/plasma/applets/kickoff/simpleapplet/menuview.cpp kdebase-workspace-4.0.1/plasma/applets/kickoff/simpleapplet/menuview.cpp
--- kdebase-workspace-4.0.1.orig/plasma/applets/kickoff/simpleapplet/menuview.cpp	2008-01-31 10:53:52.000000000 +0100
+++ kdebase-workspace-4.0.1/plasma/applets/kickoff/simpleapplet/menuview.cpp	2008-02-01 21:35:25.000000000 +0100
@@ -35,7 +35,7 @@
 class MenuView::Private
 {
 public:
-    Private(MenuView *parent) : q(parent) , model(0) , column(0), launcher(new UrlItemLauncher(parent)) {}
+    Private(MenuView *parent) : q(parent) , model(0) , column(0), launcher(new UrlItemLauncher(parent)), formattype(MenuView::DescriptionName) {}
 
     QAction *createActionForIndex(const QModelIndex& index,QWidget *parent)
     {
@@ -69,6 +69,7 @@
     QAbstractItemModel *model;
     int column;
     UrlItemLauncher *launcher;
+    MenuView::FormatType formattype;
 };
 
 MenuView::MenuView(QWidget *parent)
@@ -86,11 +87,48 @@
 }
 void MenuView::updateAction(QAction *action,const QModelIndex& index)
 {
-    QString text = index.data(Qt::DisplayRole).value<QString>();
-    const QString name = index.data(Kickoff::SubTitleRole).value<QString>();
-    if (action->menu()==0 && name.contains(text,Qt::CaseInsensitive))
-        text = name;
-    action->setText(text.replace("&","&&"));
+    QString text = index.data(Qt::DisplayRole).value<QString>(); // describing text, e.g. "Spreadsheet" or "Rekall" (right, sometimes the text is also used for the generic app-name)
+    QString name = index.data(Kickoff::SubTitleRole).value<QString>(); // the generic name, e.g. "kspread" or "OpenOffice.org Spreadsheet" or just "" (right, it's a mess too)
+    if( action->menu()!=0 ) { // if its an item with sub-menuitems, we probably like to thread them another way...
+        action->setText(text.replace("&","&&"));
+    }
+    else {
+        switch( d->formattype ) {
+            case Name: {
+                if( name.isEmpty() ) {
+                    action->setText(text.replace("&","&&"));
+                }
+                else {
+                    action->setText(name.replace("&","&&"));
+                }
+            } break;
+            case Description: {
+                if( name.contains(text,Qt::CaseInsensitive) ) {
+                    text = name;
+                }
+                action->setText(text.replace("&","&&"));
+            } break;
+            case NameDescription: // fall through
+            case DescriptionName: {
+                if( ! name.isEmpty() ) { // seems we have a program, but some of them dont define a name at all
+                    if( name.contains(text,Qt::CaseInsensitive) ) {
+                        action->setText(name.replace("&","&&"));
+                    }
+                    else {
+                        if( d->formattype == NameDescription ) {
+                            action->setText(QString("%1 %2").arg(name).arg(text).replace("&","&&"));
+                        }
+                        else {
+                            action->setText(QString("%1 (%2)").arg(text).arg(name).replace("&","&&"));
+                        }
+                    }
+                }
+                else { // if there is no name, let's just use the describing text
+                    action->setText(text.replace("&","&&"));
+                }
+            } break;
+        }
+    }
 
     action->setIcon(index.data(Qt::DecorationRole).value<QIcon>());
 }
@@ -261,6 +299,14 @@
 {
     return d->column;
 }
+MenuView::FormatType MenuView::formatType() const
+{
+    return d->formattype;
+}
+void MenuView::setFormatType(MenuView::FormatType formattype)
+{
+    d->formattype = formattype;
+}
 void MenuView::actionTriggered(QAction *action)
 {
     QModelIndex index = indexForAction(action);
diff -Naur kdebase-workspace-4.0.1.orig/plasma/applets/kickoff/simpleapplet/menuview.h kdebase-workspace-4.0.1/plasma/applets/kickoff/simpleapplet/menuview.h
--- kdebase-workspace-4.0.1.orig/plasma/applets/kickoff/simpleapplet/menuview.h	2008-01-31 10:53:52.000000000 +0100
+++ kdebase-workspace-4.0.1/plasma/applets/kickoff/simpleapplet/menuview.h	2008-02-01 21:36:31.000000000 +0100
@@ -80,6 +80,18 @@
     /** See setColumn() */
     int column() const;
 
+    /** The format type enumeration. */
+    enum FormatType {
+        Name = 0, ///< Name only
+        Description, ///< Description only
+        NameDescription, ///< Name (Description)
+        DescriptionName ///< Description (Name)
+    };
+    /** \return the format type. */
+    FormatType formatType() const;
+    /** Set the format type. */
+    void setFormatType(FormatType formattype);
+
 protected:
     /** 
      * Creates a new action to represent a leaf index in the tree.  A leaf index
diff -Naur kdebase-workspace-4.0.1.orig/plasma/applets/kickoff/simpleapplet/simpleapplet.cpp kdebase-workspace-4.0.1/plasma/applets/kickoff/simpleapplet/simpleapplet.cpp
--- kdebase-workspace-4.0.1.orig/plasma/applets/kickoff/simpleapplet/simpleapplet.cpp	2008-01-31 10:53:52.000000000 +0100
+++ kdebase-workspace-4.0.1/plasma/applets/kickoff/simpleapplet/simpleapplet.cpp	2008-02-01 21:46:13.000000000 +0100
@@ -22,14 +22,19 @@
 #include "simpleapplet/menuview.h"
 
 // Qt
-#include <QCheckBox>
-#include <QVBoxLayout>
+#include <QLabel>
+#include <QComboBox>
+#include <QGridLayout>
 #include <QGraphicsView>
 #include <QtDebug>
+#include <QMetaObject>
+#include <QMetaEnum>
+#include <QPointer>
 
 // KDE
 #include <KIcon>
 #include <KDialog>
+#include <KMenu>
 
 // Plasma
 #include <plasma/layouts/boxlayout.h>
@@ -41,29 +46,67 @@
 #include "core/models.h"
 #include "core/applicationmodel.h"
 #include "core/favoritesmodel.h"
+#include "core/systemmodel.h"
+#include "core/recentlyusedmodel.h"
 #include "core/leavemodel.h"
+#include "core/urlitemlauncher.h"
 
 class MenuLauncherApplet::Private
 {
 public:
-        QMenu *menuview;
+        KMenu *menuview;
         Plasma::Icon *icon;
-        Kickoff::MenuView *appview;
-        Kickoff::MenuView* favview;
+        QPointer<Kickoff::UrlItemLauncher> launcher;
 
-        bool showFavorites;
-        bool showLeaveSwitchUser;
-        bool showLeaveLock;
-        bool showLeaveLogout;
+        MenuLauncherApplet::ViewType viewtype;
+        MenuLauncherApplet::FormatType formattype;
 
         KDialog *dialog;
-        QCheckBox *showFavCheckBox;
-        QCheckBox *showSwitchUserCheckBox;
-        QCheckBox *showLockCheckBox;
-        QCheckBox *showLogoutCheckBox;
+        QComboBox *viewComboBox, *formatComboBox;
 
-        Private() : menuview(0), appview(0), favview(0), dialog(0) {}
-        ~Private() { delete dialog; delete menuview; delete appview; delete favview; }
+        Private() : menuview(0), launcher(0), dialog(0) {}
+        ~Private() { delete dialog; delete menuview; }
+
+        void addItem(QComboBox* combo, const QString& caption, int index) {
+            combo->addItem(caption, index);
+        }
+
+        void setCurrentItem(QComboBox* combo, int currentIndex) {
+            for(int i = combo->count() - 1; i >= 0; --i) {
+                if( combo->itemData(i).toInt() == currentIndex ) {
+                    combo->setCurrentIndex(i);
+                    return;
+                }
+            }
+            if( combo->count() > 0 )
+                combo->setCurrentIndex(0);
+        }
+
+        Kickoff::MenuView *createMenuView(QAbstractItemModel *model = 0) {
+            Kickoff::MenuView *view = new Kickoff::MenuView(menuview);
+            view->setFormatType( (Kickoff::MenuView::FormatType) formattype );
+            if( model ) {
+                model->setParent(view); //re-parent
+                view->setModel(model);
+            }
+            return view;
+        }
+
+        void addMenu(Kickoff::MenuView *view, bool mergeFirstLevel) {
+            QList<QAction*> actions = view->actions();
+            foreach(QAction *action, actions) {
+                if( action->menu() && mergeFirstLevel ) {
+                    QMetaObject::invokeMethod(action->menu(),"aboutToShow"); //fetch the children
+                    if( actions.count() > 1 )
+                        menuview->addTitle(action->text());
+                    foreach(QAction *a, action->menu()->actions())
+                        menuview->addAction(a);
+                }
+                else {
+                    menuview->addAction(action);
+                }
+            }
+        }
 };
 
 MenuLauncherApplet::MenuLauncherApplet(QObject *parent, const QVariantList &args)
@@ -76,10 +119,8 @@
     d->icon->setFlag(ItemIsMovable, false);
     connect(d->icon, SIGNAL(pressed(bool)), this, SLOT(toggleMenu(bool)));
 
-    d->showFavorites = true;
-    d->showLeaveSwitchUser = true;
-    d->showLeaveLock = true;
-    d->showLeaveLogout = true;
+    d->viewtype = Combined;
+    d->formattype = NameDescription;
 }
 
 MenuLauncherApplet::~MenuLauncherApplet()
@@ -94,10 +135,16 @@
     d->icon->setIcon(KIcon(cg.readEntry("icon","start-here-kde")));
     //setMinimumContentSize(d->icon->iconSize()); //setSize(d->icon->iconSize())
 
-    d->showFavorites = cg.readEntry("showFavorites",d->showFavorites);
-    d->showLeaveSwitchUser = cg.readEntry("showLeaveSwitchUser",d->showLeaveSwitchUser);
-    d->showLeaveLock = cg.readEntry("showLeaveLock",d->showLeaveLock);
-    d->showLeaveLogout = cg.readEntry("showLeaveLogout",d->showLeaveLogout);
+    {
+        QMetaEnum e = metaObject()->enumerator(metaObject()->indexOfEnumerator("ViewType"));
+        QByteArray ba = cg.readEntry("view", QByteArray(e.valueToKey(d->viewtype)));
+        d->viewtype = (MenuLauncherApplet::ViewType) e.keyToValue(ba);
+    }
+    {
+        QMetaEnum e = metaObject()->enumerator(metaObject()->indexOfEnumerator("FormatType"));
+        QByteArray ba = cg.readEntry("format", QByteArray(e.valueToKey(d->formattype)));
+        d->formattype = (MenuLauncherApplet::FormatType) e.keyToValue(ba);
+    }
 
     Kickoff::UrlItemLauncher::addGlobalHandler(Kickoff::UrlItemLauncher::ExtensionHandler,"desktop",new Kickoff::ServiceItemHandler);
     Kickoff::UrlItemLauncher::addGlobalHandler(Kickoff::UrlItemLauncher::ProtocolHandler, "leave", new Kickoff::LeaveItemHandler);
@@ -139,44 +186,64 @@
         connect(d->dialog, SIGNAL(applyClicked()), this, SLOT(configAccepted()));
         connect(d->dialog, SIGNAL(okClicked()), this, SLOT(configAccepted()));
 
-        QVBoxLayout *layout = new QVBoxLayout(d->dialog->mainWidget());
-        d->dialog->mainWidget()->setLayout(layout);
-
-        d->showFavCheckBox = new QCheckBox(i18n("Favorites"), d->dialog->mainWidget());
-        layout->addWidget(d->showFavCheckBox);
-
-        d->showSwitchUserCheckBox = new QCheckBox(i18n("Switch user"), d->dialog->mainWidget());
-        layout->addWidget(d->showSwitchUserCheckBox);
+        QWidget *p = d->dialog->mainWidget();
+        QGridLayout *l = new QGridLayout(p);
+        p->setLayout(l);
+
+        l->addWidget(new QLabel(i18n("View:"), p), 0, 0);
+        d->viewComboBox = new QComboBox(p);
+        d->addItem(d->viewComboBox, i18n("Combined"), MenuLauncherApplet::Combined);
+        d->addItem(d->viewComboBox, i18n("Favorites"), MenuLauncherApplet::Favorites);
+        d->addItem(d->viewComboBox, i18n("Applications"), MenuLauncherApplet::Applications);
+        d->addItem(d->viewComboBox, i18n("Computer"), MenuLauncherApplet::Computer);
+        d->addItem(d->viewComboBox, i18n("Recently Used"), MenuLauncherApplet::RecentlyUsed);
+        d->addItem(d->viewComboBox, i18n("Leave"), MenuLauncherApplet::Leave);
+        l->addWidget(d->viewComboBox, 0, 1);
+
+        l->addWidget(new QLabel(i18n("Format:"), p), 1, 0);
+        d->formatComboBox = new QComboBox(p);
+        d->addItem(d->formatComboBox, i18n("Name only"), MenuLauncherApplet::Name);
+        d->addItem(d->formatComboBox, i18n("Description only"), MenuLauncherApplet::Description);
+        d->addItem(d->formatComboBox, i18n("Name Description"), MenuLauncherApplet::NameDescription);
+        d->addItem(d->formatComboBox, i18n("Description (Name)"), MenuLauncherApplet::DescriptionName);
+        l->addWidget(d->formatComboBox, 1, 1);
 
-        d->showLockCheckBox = new QCheckBox(i18n("Lock"), d->dialog->mainWidget());
-        layout->addWidget(d->showLockCheckBox);
-
-        d->showLogoutCheckBox = new QCheckBox(i18n("Logout"), d->dialog->mainWidget());
-        layout->addWidget(d->showLogoutCheckBox);
+        l->setColumnStretch(1,1);
     }
-    d->showFavCheckBox->setChecked(d->showFavorites);
-    d->showSwitchUserCheckBox->setChecked(d->showLeaveSwitchUser);
-    d->showLockCheckBox->setChecked(d->showLeaveLock);
-    d->showLogoutCheckBox->setChecked(d->showLeaveLogout);
+    d->setCurrentItem(d->viewComboBox, d->viewtype);
+    d->setCurrentItem(d->formatComboBox, d->formattype);
     d->dialog->show();
 }
 
 void MenuLauncherApplet::configAccepted()
 {
-    d->showFavorites = d->showFavCheckBox->isChecked();
-    d->showLeaveSwitchUser = d->showSwitchUserCheckBox->isChecked();
-    d->showLeaveLock = d->showLockCheckBox->isChecked();
-    d->showLeaveLogout = d->showLogoutCheckBox->isChecked();
 
+    bool needssaving = false;
     KConfigGroup cg = config();
-    cg.writeEntry("showFavorites", d->showFavorites);
-    cg.writeEntry("showLeaveSwitchUser", d->showLeaveSwitchUser);
-    cg.writeEntry("showLeaveLock", d->showLeaveLock);
-    cg.writeEntry("showLeaveLogout", d->showLeaveLogout);
-    emit configNeedsSaving();
+    int vt = d->viewComboBox->itemData(d->viewComboBox->currentIndex()).toInt();
+    if( vt != d->viewtype ) {
+        d->viewtype = (MenuLauncherApplet::ViewType) vt;
+        needssaving = true;
+
+        QMetaEnum e = metaObject()->enumerator(metaObject()->indexOfEnumerator("ViewType"));
+        cg.writeEntry("view", QByteArray(e.valueToKey(d->viewtype)));
+    }
+
+    int ft = d->formatComboBox->itemData(d->formatComboBox->currentIndex()).toInt();
+    if( ft != d->formattype ) {
+        d->formattype = (MenuLauncherApplet::FormatType) ft;
+        needssaving = true;
 
-    delete d->menuview;
-    d->menuview = 0;
+        QMetaEnum e = metaObject()->enumerator(metaObject()->indexOfEnumerator("FormatType"));
+        cg.writeEntry("format", QByteArray(e.valueToKey(d->formattype)));
+    }
+
+    if( needssaving ) {
+        emit configNeedsSaving();
+
+        delete d->menuview;
+        d->menuview = 0;
+    }
 }
 
 void MenuLauncherApplet::toggleMenu(bool pressed)
@@ -186,44 +253,51 @@
     }
 
     if (!d->menuview) {
-        d->menuview = new QMenu();
+        d->menuview = new KMenu();
         connect(d->menuview,SIGNAL(triggered(QAction*)),this,SLOT(actionTriggered(QAction*)));
         connect(d->menuview,SIGNAL(aboutToHide()),d->icon,SLOT(setUnpressed()));
 
-        if(!d->appview) {
-            d->appview = new Kickoff::MenuView();
-            ApplicationModel *appModel = new ApplicationModel(d->appview);
-            appModel->setDuplicatePolicy(ApplicationModel::ShowLatestOnlyPolicy);
-            d->appview->setModel(appModel);
-        }
-        foreach (QAction *action, d->appview->actions())
-            d->menuview->addAction(action);
-
-        if (d->showFavorites) {
-            if (!d->favview) {
-                d->favview = new Kickoff::MenuView();
-                Kickoff::FavoritesModel* favmodel = new Kickoff::FavoritesModel(d->favview);
-                d->favview->setModel(favmodel);
-            }
-            d->menuview->addSeparator();
-            foreach (QAction *action, d->favview->actions())
-                d->menuview->addAction(action);
-        }
-
-        if (d->showLeaveSwitchUser || d->showLeaveLock || d->showLeaveLogout) {
-            d->menuview->addSeparator();
-            if (d->showLeaveSwitchUser) {
-                QAction *lockaction = d->menuview->addAction(KIcon("system-switch-user"),i18n("Switch User"));
-                lockaction->setData(QUrl("leave:/switch"));
-            }
-            if (d->showLeaveLock) {
+        switch( d->viewtype ) {
+            case Combined: {
+                ApplicationModel *appModel = new ApplicationModel();
+                appModel->setDuplicatePolicy(ApplicationModel::ShowLatestOnlyPolicy);
+                Kickoff::MenuView *appview = d->createMenuView(appModel);
+                d->addMenu(appview, false);
+
+                d->menuview->addSeparator();
+                Kickoff::MenuView *favview = d->createMenuView(new Kickoff::FavoritesModel(d->menuview));
+                d->addMenu(favview, false);
+
+                d->menuview->addSeparator();
+                QAction *switchaction = d->menuview->addAction(KIcon("system-switch-user"),i18n("Switch User"));
+                switchaction->setData(QUrl("leave:/switch"));
                 QAction *lockaction = d->menuview->addAction(KIcon("system-lock-screen"),i18n("Lock"));
                 lockaction->setData(QUrl("leave:/lock"));
-            }
-            if (d->showLeaveLogout) {
                 QAction *logoutaction = d->menuview->addAction(KIcon("system-log-out"),i18n("Logout"));
                 logoutaction->setData(QUrl("leave:/logout"));
-            }
+            } break;
+            case Favorites: {
+                Kickoff::MenuView *favview = d->createMenuView(new Kickoff::FavoritesModel(d->menuview));
+                d->addMenu(favview, true);
+            } break;
+            case Applications: {
+                ApplicationModel *appModel = new ApplicationModel();
+                appModel->setDuplicatePolicy(ApplicationModel::ShowLatestOnlyPolicy);
+                Kickoff::MenuView *appview = d->createMenuView(appModel);
+                d->addMenu(appview, false);
+            } break;
+            case Computer: {
+                Kickoff::MenuView *systemview = d->createMenuView(new Kickoff::SystemModel());
+                d->addMenu(systemview, true);
+            } break;
+            case RecentlyUsed: {
+                Kickoff::MenuView *recentlyview = d->createMenuView(new Kickoff::RecentlyUsedModel());
+                d->addMenu(recentlyview, true);
+            } break;
+            case Leave: {
+                Kickoff::MenuView *leaveview = d->createMenuView(new Kickoff::LeaveModel(d->menuview));
+                d->addMenu(leaveview, true);
+            } break;
         }
     }
 
@@ -250,9 +324,10 @@
     if (action->data().type() == QVariant::Url) {
         QUrl url = action->data().toUrl();
         if (url.scheme() == "leave") {
-            Kickoff::UrlItemLauncher *launcher = d->appview ? d->appview->launcher() : 0;
-            if (launcher)
-                launcher->openUrl(url.toString());
+            if ( ! d->launcher ) {
+                d->launcher = new Kickoff::UrlItemLauncher(d->menuview);
+            }
+            d->launcher->openUrl(url.toString());
         }
     }
     else {
diff -Naur kdebase-workspace-4.0.1.orig/plasma/applets/kickoff/simpleapplet/simpleapplet.h kdebase-workspace-4.0.1/plasma/applets/kickoff/simpleapplet/simpleapplet.h
--- kdebase-workspace-4.0.1.orig/plasma/applets/kickoff/simpleapplet/simpleapplet.h	2008-01-31 10:53:52.000000000 +0100
+++ kdebase-workspace-4.0.1/plasma/applets/kickoff/simpleapplet/simpleapplet.h	2008-02-01 21:48:24.000000000 +0100
@@ -29,7 +29,25 @@
 {
 Q_OBJECT
 
+Q_ENUMS(ViewType)
+Q_ENUMS(FormatType)
 public:
+
+        enum ViewType {
+            Combined = 0,
+            Favorites,
+            Applications,
+            Computer,
+            RecentlyUsed,
+            Leave
+        };
+
+        enum FormatType {
+            Name = 0,
+            Description,
+            NameDescription,
+            DescriptionName
+        };
         MenuLauncherApplet(QObject *parent, const QVariantList &args);
         virtual ~MenuLauncherApplet();
 


Index: kdebase-workspace.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kdebase-workspace/devel/kdebase-workspace.spec,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -r1.28 -r1.29
--- kdebase-workspace.spec	31 Jan 2008 12:58:00 -0000	1.28
+++ kdebase-workspace.spec	1 Feb 2008 22:00:44 -0000	1.29
@@ -6,7 +6,7 @@
 Name: kdebase-workspace
 Version: 4.0.1
 
-Release: 1%{?dist}
+Release: 2%{?dist}
 Source0: ftp://ftp.kde.org/pub/kde/stable/%{version}/src/kdebase-workspace-%{version}.tar.bz2
 License: GPLv2
 Group: User Interface/Desktops
@@ -17,7 +17,7 @@
 Patch2: kdebase-workspace-4.0.0-consolekit-kdm.patch
 # http://bugs.kde.org/155362 (show Name in addition to GenericName in simple menu)
 # backported from trunk (KDE 4.1): http://websvn.kde.org/?view=rev&revision=762886
-Patch5: kdebase-workspace-4.0.0-kde#155362.patch
+Patch3: kdebase-workspace-4.0.1-kde#155362.patch
 
 # upgrade path for former kde-redhat'ers
 Obsoletes: kdebase-kdm < 6:%{version}-%{release}
@@ -103,8 +103,7 @@
 %patch1 -p1 -b .redhat-startkde
 # ConsoleKit support for KDM (#228111, kde#147790)
 %patch2 -p1 -b .consolekit
-# FIXME: omitted for now, doesn't apply
-#patch5 -p1 -b .kde#155362
+%patch3 -p1 -b .kde#155362
 
 
 %build
@@ -216,6 +215,9 @@
 
 
 %changelog
+* Fri Feb 01 2008 Kevin Kofler <Kevin at tigcc.ticalc.org> 4.0.1-2
+- update kde#155362 (simple menu) patch for 4.0.1 (thanks to Jan Mette)
+
 * Wed Jan 30 2008 Rex Dieter <rdieter at fedoraproject.org> 4.0.1-1
 - 4.0.1
 


--- kdebase-workspace-4.0.0-kde#155362.patch DELETED ---




More information about the fedora-extras-commits mailing list