[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