[vlc-commits] Qt: fix global hotkeys retrieval from conf

Jean-Baptiste Kempf git at videolan.org
Tue Dec 13 03:13:13 CET 2011


vlc | branch: master | Jean-Baptiste Kempf <jb at videolan.org> | Tue Dec 13 03:11:56 2011 +0100| [18049f2610813910140f2dfb2236ea4529766eb1] | committer: Jean-Baptiste Kempf

Qt: fix global hotkeys retrieval from conf

If the global key arrived before the normal key, it didn't got
displayed.
Bug mentioned on IRC.

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=18049f2610813910140f2dfb2236ea4529766eb1
---

 modules/gui/qt4/components/preferences_widgets.cpp |   36 +++++++++++++------
 1 files changed, 24 insertions(+), 12 deletions(-)

diff --git a/modules/gui/qt4/components/preferences_widgets.cpp b/modules/gui/qt4/components/preferences_widgets.cpp
index 9c9ddd4..289f4ae 100644
--- a/modules/gui/qt4/components/preferences_widgets.cpp
+++ b/modules/gui/qt4/components/preferences_widgets.cpp
@@ -1337,6 +1337,7 @@ void KeySelectorControl::finish()
 
     p_config = module_config_get (p_main, &confsize);
 
+    QMap<QString, QString> global_keys;
     for (size_t i = 0; i < confsize; i++)
     {
         module_config_t *p_item = p_config + i;
@@ -1366,20 +1367,29 @@ void KeySelectorControl::finish()
 
         if( CONFIG_ITEM(p_item->i_type) && p_item->psz_name != NULL
          && !strncmp( p_item->psz_name , "global-key", 10 )
-         && !EMPTY_STR( p_item->psz_text ) )
+         && !EMPTY_STR( p_item->psz_text )
+         && !EMPTY_STR( p_item->value.psz ) )
         {
-            QList<QTreeWidgetItem *> list =
-                table->findItems( qtr( p_item->psz_text ), Qt::MatchExactly );
-            if( list.count() >= 1 )
-            {
-                QString keys = qfu( p_item->value.psz );
-                list[0]->setText( 2, keys );
-                list[0]->setData( 2, Qt::UserRole, keys );
-            }
-            if( list.count() >= 2 )
-                msg_Dbg( p_this, "This is probably wrong, %s", p_item->psz_text );
+            global_keys.insertMulti( qtr( p_item->psz_text ), qfu( p_item->value.psz ) );
+        }
+    }
+
+    QMap<QString, QString>::const_iterator i = global_keys.constBegin();
+    while (i != global_keys.constEnd())
+    {
+        QList<QTreeWidgetItem *> list = table->findItems( i.key(), Qt::MatchExactly|Qt::MatchWrap, 0 );
+        if( list.count() >= 1 )
+        {
+            QString keys = i.value();
+            list[0]->setText( 2, keys );
+            list[0]->setData( 2, Qt::UserRole, keys );
         }
+        if( list.count() >= 2 )
+            msg_Dbg( p_this, "This is probably wrong, %s", qtu(i.key()) );
+
+        i++;
     }
+
     module_config_free (p_config);
 
     table->resizeColumnToContents( 0 );
@@ -1454,10 +1464,12 @@ void KeySelectorControl::doApply()
             config_PutPsz( p_this,
                            qtu( it->data( 0, Qt::UserRole ).toString() ),
                            qtu( it->data( 1, Qt::UserRole ).toString() ) );
-        if( it->data( 2, Qt::UserRole ).toInt() >= 0 )
+        if( !it->data( 2, Qt::UserRole ).toString().isEmpty() )
+        {
             config_PutPsz( p_this,
                            qtu( "global-" + it->data( 0, Qt::UserRole ).toString() ),
                            qtu( it->data( 2, Qt::UserRole ).toString() ) );
+        }
 
     }
 }



More information about the vlc-commits mailing list