2010/5/22 Chani <[email protected]>
> On May 22, 2010 09:03:53 Alessandro Diaferia wrote:
> > Hullo,
> > it seems reviewboard cannot connect to anonsvn (at least from here) so
> i'm
> > attaching the patch here as it is really small.
> >
> > Having a look at https://bugs.kde.org/show_bug.cgi?id=231791 you can see
> > how easy is reproducing the bug.
> > It seems that kickoff does not allow adding favorites via D&D. D&D is
> only
> > used to move items in the list.
> > This little patch allows adding favorites via D&D dragging from the
> > application view to the favorites one.
> > I just don't know if this is considered as a new feature. It seems to me
> > that this patch just makes kickoff behaving as it is expected to behave.
> >
> > Anyway the last word is yours of course, plasma-friends :)
> >
> > Regards.
>
> hmm. no comment on whether it's a feature.. code looks sensible, although
> wouldn't it be more future-proof to iterate over data->urls() instead of
> only
> taking the first?
>
you're just right.. so here comes the updated patch :)
> --
> This message brought to you by eevil bananas and the number 3.
> www.chani3.com
>
> _______________________________________________
> Plasma-devel mailing list
> [email protected]
> https://mail.kde.org/mailman/listinfo/plasma-devel
>
>
--
Alessandro Diaferia
KDE Developer
KDE e.V. member
Index: core/favoritesmodel.cpp
===================================================================
--- core/favoritesmodel.cpp (revision 1129455)
+++ core/favoritesmodel.cpp (local copy)
@@ -29,6 +29,7 @@
// KDE
#include <KConfigGroup>
#include <KService>
+#include <KDesktopFile>
#include <kdebug.h>
using namespace Kickoff;
@@ -265,9 +266,9 @@ bool FavoritesModel::dropMimeData(const
if (action == Qt::MoveAction) {
QModelIndex modelIndex;
QStandardItem *startItem;
- int startRow = 0, destRow;
+ int startRow = -1;
- destRow = row;
+ int destRow = row;
// look for the favorite that was dragged
for (int i = 0; i < d->headerItem->rowCount(); i++) {
@@ -279,6 +280,25 @@ bool FavoritesModel::dropMimeData(const
}
}
+ if (startRow < 0) {
+ bool dropped = false;
+ foreach (const QUrl &url, data->urls()) {
+ if (!url.isValid()) {
+ continue;
+ }
+ const QString path = url.toLocalFile();
+ if (!KDesktopFile::isDesktopFile(path)) {
+ continue;
+ }
+ KDesktopFile dFile(path);
+ if (dFile.hasApplicationType() && !dFile.noDisplay()) {
+ FavoritesModel::add(path);
+ dropped = true;
+ }
+ }
+ return dropped;
+ }
+
if (destRow < 0)
return false;
Index: ui/urlitemview.cpp
===================================================================
--- ui/urlitemview.cpp (revision 1129455)
+++ ui/urlitemview.cpp (local copy)
@@ -23,6 +23,7 @@
// Qt
#include <QtCore/QHash>
#include <QtCore/QPersistentModelIndex>
+#include <QtCore/QUrl>
#include <QtGui/QMouseEvent>
#include <QtGui/QPainter>
@@ -30,6 +31,7 @@
#include <QtGui/QScrollBar>
#include <QtGui/QToolTip>
+
// KDE
#include <KDebug>
#include <KGlobalSettings>
@@ -675,6 +677,10 @@ void UrlItemView::dropEvent(QDropEvent *
int row;
QPoint pos = event->pos();
QModelIndex parent = indexAt(pos);
+
+ if (!parent.isValid()) {
+ return;
+ }
const QRect rect = visualRect(parent);
row = parent.row();
_______________________________________________
Plasma-devel mailing list
[email protected]
https://mail.kde.org/mailman/listinfo/plasma-devel