(gtk) #649: don't ask for confirmation on close when there are no active torrents.

This commit is contained in:
Charles Kerr 2008-01-27 20:12:10 +00:00
parent 02799f7060
commit f72d7052c7
1 changed files with 20 additions and 2 deletions

View File

@ -356,6 +356,19 @@ quitresp( GtkWidget * widget, int response, gpointer data )
gtk_widget_destroy( widget ); gtk_widget_destroy( widget );
} }
static gboolean
countActiveTorrents( GtkTreeModel * model,
GtkTreePath * path UNUSED,
GtkTreeIter * iter,
gpointer activeTorrentCount )
{
int status = -1;
gtk_tree_model_get( model, iter, MC_STATUS, &status, -1 );
if( status != TR_STATUS_STOPPED )
*(int*)activeTorrentCount += 1;
return FALSE; /* keep iterating */
}
void void
askquit( TrCore * core, askquit( TrCore * core,
GtkWindow * parent, GtkWindow * parent,
@ -365,6 +378,8 @@ askquit( TrCore * core,
struct quitdata * stuff; struct quitdata * stuff;
GtkWidget * wind; GtkWidget * wind;
GtkWidget * dontask; GtkWidget * dontask;
GtkTreeModel * model;
int activeTorrentCount;
/* if the user doesn't want to be asked, don't ask */ /* if the user doesn't want to be asked, don't ask */
if( !pref_flag_get( PREF_KEY_ASKQUIT ) ) { if( !pref_flag_get( PREF_KEY_ASKQUIT ) ) {
@ -372,8 +387,11 @@ askquit( TrCore * core,
return; return;
} }
/* if there aren't any torrents, don't ask */ /* if there aren't any active torrents, don't ask */
if( !tr_torrentCount( tr_core_handle( core ) ) ) { model = tr_core_model( core );
activeTorrentCount = 0;
gtk_tree_model_foreach( model, countActiveTorrents, &activeTorrentCount );
if( !activeTorrentCount ) {
func( cbdata ); func( cbdata );
return; return;
} }