[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdebase/workspace/kcontrol/kxkb
From: Jesper Thomschütz <jesperht () yahoo ! com>
Date: 2009-02-26 11:35:44
Message-ID: 1235648144.621019.23458.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 932332 by jesperht:
Using mimedata for drag/drop of keyboard layouts, instead of relying on buggy focus \
hacks.
M +21 -8 kcmlayout.cpp
M +1 -0 kcmlayout.h
--- trunk/KDE/kdebase/workspace/kcontrol/kxkb/kcmlayout.cpp #932331:932332
@@ -112,6 +112,8 @@
{ \
QMimeData *mimeData = QAbstractTableModel::mimeData(indexes); \
mimeData->setText(indexes.first().data().toString());
+ mimeData->setData("text/x-kxkb-srcLayout", \
indexes.first().data().toString().toAscii()); +
return mimeData; \
}
@@ -125,8 +127,9 @@
\
if (action == Qt::IgnoreAction) \
return false; \
- \
- emit layoutRemoved(); \
+
+ if (data->hasFormat("text/x-kxkb-dstLayout"))
+ emit layoutRemoved(); \
return true; \
}
@@ -171,6 +174,15 @@
}
return QVariant();
}
+ \
+QMimeData* DstLayoutModel::mimeData(const QModelIndexList &indexes) const \
+{ \
+ QMimeData *mimeData = QAbstractTableModel::mimeData(indexes); \
+ mimeData->setText(indexes.first().data().toString());
+ mimeData->setData("text/x-kxkb-dstLayout", \
indexes.first().data().toString().toAscii()); +
+ return mimeData; \
+}
bool DstLayoutModel::dropMimeData(const QMimeData *data, \
Qt::DropAction action, int row, int column, const QModelIndex &parent) \
@@ -182,8 +194,10 @@
\
if (action == Qt::IgnoreAction) \
return false; \
- \
- emit layoutAdded(); \
+
+ if (data->hasFormat("text/x-kxkb-srcLayout"))
+ emit layoutAdded(); \
+
return true; \
} \
\
@@ -688,9 +702,8 @@
QString layout = m_srcModel->getLayoutAt(selected[0].row());
// kDebug() << "selected to add" << layout;
- //First check for duplicates
- //Second make sure it's not dropped from itself.
- if (m_kxkbConfig.m_layouts.contains(layout) || widget->dstTableView->hasFocus())
+ //Check for duplicates
+ if (m_kxkbConfig.m_layouts.contains(layout))
return;
LayoutUnit lu(layout, "");
@@ -713,7 +726,7 @@
}
void LayoutConfig::remove()
-{
+{
QItemSelectionModel* selectionModel = widget->dstTableView->selectionModel();
if( selectionModel == NULL || !selectionModel->hasSelection() )
return;
--- trunk/KDE/kdebase/workspace/kcontrol/kxkb/kcmlayout.h #932331:932332
@@ -193,6 +193,7 @@
void emitDataChange(int row, int col) { emit \
dataChanged(createIndex(row,col),createIndex(row,col)); }
bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int \
column, const QModelIndex &parent); Qt::ItemFlags flags(const \
QModelIndex &index) const; + QMimeData* mimeData(const QModelIndexList &indexes) \
const;
private:
XkbRules* m_rules;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic