vlc | branch: master | Francois Cartegnie <[email protected]> | Sat May 18 14:40:52 2013 +0200| [514a59441ff442372efab7d1123d93982ba22ceb] | committer: Francois Cartegnie
Qt: SimplePreferences: Don't use QButtonGroup (fix #8609) > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=514a59441ff442372efab7d1123d93982ba22ceb --- modules/gui/qt4/components/simple_preferences.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/modules/gui/qt4/components/simple_preferences.cpp b/modules/gui/qt4/components/simple_preferences.cpp index 0467cc0..47170c8 100644 --- a/modules/gui/qt4/components/simple_preferences.cpp +++ b/modules/gui/qt4/components/simple_preferences.cpp @@ -37,7 +37,7 @@ #include <QString> #include <QFont> #include <QToolButton> -#include <QButtonGroup> +#include <QSignalMapper> #include <QVBoxLayout> #include <QScrollArea> @@ -61,10 +61,11 @@ SPrefsCatList::SPrefsCatList( intf_thread_t *_p_intf, QWidget *_parent, bool sma { QVBoxLayout *layout = new QVBoxLayout(); - QButtonGroup *buttonGroup = new QButtonGroup( this ); - buttonGroup->setExclusive ( true ); - CONNECT( buttonGroup, buttonClicked ( int ), - this, switchPanel( int ) ); + /* Use autoExclusive buttons and a mapper as QButtonGroup can't + set focus (keys) when it manages the buttons's exclusivity. + See QT bugs 131 & 816 and QAbstractButton's source code. */ + QSignalMapper *mapper = new QSignalMapper( layout ); + CONNECT( mapper, mapped(int), this, switchPanel(int) ); short icon_height = small ? ICON_HEIGHT /2 : ICON_HEIGHT; @@ -79,7 +80,9 @@ SPrefsCatList::SPrefsCatList( intf_thread_t *_p_intf, QWidget *_parent, bool sma button->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding) ; \ button->setAutoRaise( true ); \ button->setCheckable( true ); \ - buttonGroup->addButton( button, numb ); \ + button->setAutoExclusive( true ); \ + CONNECT( button, clicked(), mapper, map() ); \ + mapper->setMapping( button, numb ); \ layout->addWidget( button ); ADD_CATEGORY( SPrefsInterface, qtr("Interface"), qtr("Interface Settings"), _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
