diff -Naur kdemultimedia-3.5.8.orig/kmix/kmix.cpp kdemultimedia-3.5.8/kmix/kmix.cpp --- kdemultimedia-3.5.8.orig/kmix/kmix.cpp 2007-01-15 12:22:56.000000000 +0100 +++ kdemultimedia-3.5.8/kmix/kmix.cpp 2007-11-21 08:20:46.000000000 +0100 @@ -197,7 +197,7 @@ // create dock widget // !! This should be a View in the future - m_dockWidget = new KMixDockWidget( Mixer::mixers().first(), this, "mainDockWidget", m_volumeWidget ); + m_dockWidget = new KMixDockWidget( Mixer::mixers().first(), this, "mainDockWidget", m_volumeWidget, m_dockIconMuting ); /* Belongs in KMixDockWidget // create RMB menu @@ -249,6 +249,7 @@ config->writeEntry( "Tickmarks", m_showTicks ); config->writeEntry( "Labels", m_showLabels ); config->writeEntry( "startkdeRestore", m_onLogin ); + config->writeEntry( "DockIconMuting", m_dockIconMuting ); Mixer* mixerMasterCard = Mixer::masterCard(); if ( mixerMasterCard != 0 ) { config->writeEntry( "MasterMixer", mixerMasterCard->id() ); @@ -298,6 +299,7 @@ m_showLabels = config->readBoolEntry("Labels", true); const QString& valueStyleString = config->readEntry("ValueStyle", "None"); m_onLogin = config->readBoolEntry("startkdeRestore", true ); + m_dockIconMuting = config->readBoolEntry( "DockIconMuting", false); m_startVisible = config->readBoolEntry("Visible", true); m_multiDriverMode = config->readBoolEntry("MultiDriver", false); m_surroundView = config->readBoolEntry("Experimental-ViewSurround", false ); @@ -428,6 +430,7 @@ m_prefDlg->m_showTicks->setChecked( m_showTicks ); m_prefDlg->m_showLabels->setChecked( m_showLabels ); m_prefDlg->m_onLogin->setChecked( m_onLogin ); + m_prefDlg->m_dockIconMuting->setChecked( m_dockIconMuting ); m_prefDlg->_rbVertical ->setChecked( m_toplevelOrientation == Qt::Vertical ); m_prefDlg->_rbHorizontal->setChecked( m_toplevelOrientation == Qt::Horizontal ); m_prefDlg->_rbNone->setChecked( m_valueStyle == MixDeviceWidget::NNONE ); @@ -497,6 +500,7 @@ m_showTicks = prefDlg->m_showTicks->isChecked(); m_showLabels = prefDlg->m_showLabels->isChecked(); m_onLogin = prefDlg->m_onLogin->isChecked(); + m_dockIconMuting = prefDlg->m_dockIconMuting->isChecked(); if ( prefDlg->_rbNone->isChecked() ) { m_valueStyle = MixDeviceWidget::NNONE; diff -Naur kdemultimedia-3.5.8.orig/kmix/kmix.h kdemultimedia-3.5.8/kmix/kmix.h --- kdemultimedia-3.5.8.orig/kmix/kmix.h 2006-01-19 17:40:29.000000000 +0100 +++ kdemultimedia-3.5.8/kmix/kmix.h 2007-11-21 08:20:46.000000000 +0100 @@ -100,6 +100,7 @@ bool m_volumeWidget; bool m_hideOnClose; bool m_showTicks; + bool m_dockIconMuting; bool m_showLabels; MixDeviceWidget::ValueStyle m_valueStyle; // No numbers by default bool m_onLogin; diff -Naur kdemultimedia-3.5.8.orig/kmix/kmixdockwidget.cpp kdemultimedia-3.5.8/kmix/kmixdockwidget.cpp --- kdemultimedia-3.5.8.orig/kmix/kmixdockwidget.cpp 2006-03-17 11:11:42.000000000 +0100 +++ kdemultimedia-3.5.8/kmix/kmixdockwidget.cpp 2007-11-21 08:20:46.000000000 +0100 @@ -47,7 +47,7 @@ #include "kwin.h" #include "viewdockareapopup.h" -KMixDockWidget::KMixDockWidget( Mixer *mixer, QWidget *parent, const char *name, bool volumePopup ) +KMixDockWidget::KMixDockWidget( Mixer *mixer, QWidget *parent, const char *name, bool volumePopup, bool dockIconMuting ) : KSystemTray( parent, name ), m_mixer(mixer), _dockAreaPopup(0L), @@ -55,7 +55,8 @@ _playBeepOnVolumeChange(false), // disabled due to triggering a "Bug" _oldToolTipValue(-1), _oldPixmapType('-'), - _volumePopup(volumePopup) + _volumePopup(volumePopup), + _dockIconMuting(dockIconMuting) { Mixer* preferredMasterMixer = Mixer::masterCard(); if ( preferredMasterMixer != 0 ) { @@ -294,7 +295,11 @@ return; } // LeftMouseButton pressed else if ( me->button() == MidButton ) { - toggleActive(); + if ( ! _dockIconMuting ) { + toggleActive(); + } else { + dockMute(); + } return; } else { diff -Naur kdemultimedia-3.5.8.orig/kmix/kmixdockwidget.h kdemultimedia-3.5.8/kmix/kmixdockwidget.h --- kdemultimedia-3.5.8.orig/kmix/kmixdockwidget.h 2006-01-19 17:40:29.000000000 +0100 +++ kdemultimedia-3.5.8/kmix/kmixdockwidget.h 2007-11-21 08:20:46.000000000 +0100 @@ -43,7 +43,7 @@ friend class KMixWindow; public: - KMixDockWidget(Mixer *, QWidget *parent=0, const char *name=0, bool volumePopup=true); + KMixDockWidget(Mixer *, QWidget *parent=0, const char *name=0, bool volumePopup=true, bool dockIconMuting=false); ~KMixDockWidget(); void setErrorPixmap(); @@ -73,6 +73,7 @@ int _oldToolTipValue; char _oldPixmapType; bool _volumePopup; + bool _dockIconMuting; private slots: void dockMute(); void selectMaster(); diff -Naur kdemultimedia-3.5.8.orig/kmix/kmixprefdlg.cpp kdemultimedia-3.5.8/kmix/kmixprefdlg.cpp --- kdemultimedia-3.5.8.orig/kmix/kmixprefdlg.cpp 2006-07-22 10:10:54.000000000 +0200 +++ kdemultimedia-3.5.8/kmix/kmixprefdlg.cpp 2007-11-21 08:20:46.000000000 +0100 @@ -67,7 +67,11 @@ m_onLogin = new QCheckBox( i18n("Restore volumes on login"), m_generalTab ); layout->addWidget( m_onLogin ); - + + m_dockIconMuting = new QCheckBox( + i18n("Middle click on system tray icon toggles muting"), m_generalTab ); + layout->addWidget( m_dockIconMuting ); + QBoxLayout *numbersLayout = new QHBoxLayout( layout ); QButtonGroup *numbersGroup = new QButtonGroup( 3, Qt::Horizontal, i18n("Numbers"), m_generalTab ); numbersGroup->setRadioButtonExclusive(true); diff -Naur kdemultimedia-3.5.8.orig/kmix/kmixprefdlg.h kdemultimedia-3.5.8/kmix/kmixprefdlg.h --- kdemultimedia-3.5.8.orig/kmix/kmixprefdlg.h 2006-01-19 17:40:29.000000000 +0100 +++ kdemultimedia-3.5.8/kmix/kmixprefdlg.h 2007-11-21 08:20:46.000000000 +0100 @@ -57,6 +57,7 @@ QCheckBox *m_showTicks; QCheckBox *m_showLabels; QCheckBox *m_onLogin; + QCheckBox *m_dockIconMuting; QRadioButton *_rbVertical; QRadioButton *_rbHorizontal; QRadioButton *_rbNone;