Ticket #2309: transmission-1.73-alt-close-to-tray.patch

File transmission-1.73-alt-close-to-tray.patch, 2.2 KB (added by zerg, 13 years ago)
  • transmission-1.73/qt/mainwin.h

    old new class TrMainWindow: public QMainWindow 
    5151        Q_OBJECT
    5252
    5353    private:
     54        bool allow_close;
    5455        time_t myLastFullUpdateTime;
    5556        QDialog * mySessionDialog;
    5657        QDialog * myPrefsDialog;
    class TrMainWindow: public QMainWindow 
    136137        void onSortBySizeToggled     ( bool );
    137138        void onSortByStateToggled    ( bool );
    138139        void onSortByTrackerToggled  ( bool );
     140        void allowClose              ( );
    139141
    140142    private:
    141143        QWidget * createFilterBar( void );
    class TrMainWindow: public QMainWindow 
    173175
    174176    private:
    175177        void clearSelection( );
     178        virtual void closeEvent( QCloseEvent* );
    176179
    177180    public slots:
    178181        void setToolbarVisible( bool );
  • transmission-1.73/qt/mainwin.cc

    old new  
    2323#include <QSystemTrayIcon>
    2424#include <QUrl>
    2525#include <QSignalMapper>
     26#include <QCloseEvent>
    2627
    2728#include <libtransmission/version.h>
    2829
    TrMainWindow :: TrMainWindow( Session& s 
    9899    myLastReadTime( 0 ),
    99100    myNetworkTimer( this )
    100101{
     102    allow_close = false;
     103
    101104    QAction * sep = new QAction( this );
    102105    sep->setSeparator( true );
    103106
    TrMainWindow :: TrMainWindow( Session& s 
    264267    connect( &mySession, SIGNAL(dataSendProgress()), this, SLOT(dataSendProgress()) );
    265268    connect( &mySession, SIGNAL(httpAuthenticationRequired()), this, SLOT(wrongAuthentication()) );
    266269
     270    connect( QCoreApplication::instance(), SIGNAL(aboutToQuit()), this, SLOT(allowClose()) );
     271
    267272    if( mySession.isServer( ) )
    268273        myNetworkLabel->hide( );
    269274    else {
    TrMainWindow :: ~TrMainWindow( ) 
    286291****/
    287292
    288293void
     294TrMainWindow :: allowClose( )
     295{
     296    allow_close = true;
     297}
     298
     299void
     300TrMainWindow :: closeEvent( QCloseEvent *e )
     301{
     302    if( myTrayIcon.isVisible( ) )
     303    {
     304        if( allow_close )
     305        {
     306            e->accept();
     307        }
     308        else
     309        {
     310            ui.action_ShowMainWindow->setChecked( false );
     311            e->ignore();
     312        }
     313    }
     314}
     315
     316void
    289317TrMainWindow :: onSessionSourceChanged( )
    290318{
    291319    myModel.clear( );