mirror of
https://github.com/transmission/transmission
synced 2024-12-26 09:37:56 +00:00
(gtk) if two torrents are selected -- one running, one paused -- both "pause" and "resume" buttons should be enabled. reported by glyphobet.
This commit is contained in:
parent
f909b97e20
commit
747cd0b396
2 changed files with 31 additions and 13 deletions
43
gtk/main.c
43
gtk/main.c
|
@ -164,15 +164,29 @@ setupsighandlers(void);
|
||||||
static void
|
static void
|
||||||
fatalsig(int sig);
|
fatalsig(int sig);
|
||||||
|
|
||||||
|
struct counts_data
|
||||||
|
{
|
||||||
|
int totalCount;
|
||||||
|
int activeCount;
|
||||||
|
int inactiveCount;
|
||||||
|
};
|
||||||
|
|
||||||
static void
|
static void
|
||||||
accumulateStatusForeach (GtkTreeModel * model,
|
accumulateStatusForeach (GtkTreeModel * model,
|
||||||
GtkTreePath * path UNUSED,
|
GtkTreePath * path UNUSED,
|
||||||
GtkTreeIter * iter,
|
GtkTreeIter * iter,
|
||||||
gpointer accumulated_status)
|
gpointer user_data )
|
||||||
{
|
{
|
||||||
int status = 0;
|
int status = 0;
|
||||||
|
struct counts_data * counts = user_data;
|
||||||
|
|
||||||
|
++counts->totalCount;
|
||||||
|
|
||||||
gtk_tree_model_get( model, iter, MC_STAT, &status, -1 );
|
gtk_tree_model_get( model, iter, MC_STAT, &status, -1 );
|
||||||
*(int*)accumulated_status |= status;
|
if( TR_STATUS_IS_ACTIVE( status ) )
|
||||||
|
++counts->activeCount;
|
||||||
|
else
|
||||||
|
++counts->inactiveCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -191,17 +205,22 @@ accumulateCanUpdateForeach (GtkTreeModel * model,
|
||||||
static void
|
static void
|
||||||
refreshTorrentActions( GtkTreeSelection * s )
|
refreshTorrentActions( GtkTreeSelection * s )
|
||||||
{
|
{
|
||||||
int status = 0;
|
int canUpdate;
|
||||||
gtk_tree_selection_selected_foreach( s, accumulateStatusForeach, &status );
|
struct counts_data counts;
|
||||||
action_sensitize( "pause-torrent", TR_STATUS_IS_ACTIVE(status) );
|
|
||||||
action_sensitize( "start-torrent", !TR_STATUS_IS_ACTIVE(status) );
|
|
||||||
action_sensitize( "remove-torrent", status != 0);
|
|
||||||
action_sensitize( "verify-torrent", status != 0);
|
|
||||||
action_sensitize( "show-torrent-details", status != 0);
|
|
||||||
|
|
||||||
status = 0;
|
counts.activeCount = 0;
|
||||||
gtk_tree_selection_selected_foreach( s, accumulateCanUpdateForeach, &status );
|
counts.inactiveCount = 0;
|
||||||
action_sensitize( "update-tracker", status != 0);
|
counts.totalCount = 0;
|
||||||
|
gtk_tree_selection_selected_foreach( s, accumulateStatusForeach, &counts );
|
||||||
|
action_sensitize( "pause-torrent", counts.activeCount!=0 );
|
||||||
|
action_sensitize( "start-torrent", counts.inactiveCount!=0 );
|
||||||
|
action_sensitize( "remove-torrent", counts.totalCount!=0 );
|
||||||
|
action_sensitize( "verify-torrent", counts.totalCount!=0 );
|
||||||
|
action_sensitize( "show-torrent-details", counts.totalCount!=0 );
|
||||||
|
|
||||||
|
canUpdate = 0;
|
||||||
|
gtk_tree_selection_selected_foreach( s, accumulateCanUpdateForeach, &canUpdate );
|
||||||
|
action_sensitize( "update-tracker", canUpdate!=0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
@ -322,7 +322,6 @@ tr_close( tr_handle * h )
|
||||||
tr_lockFree( h->lock );
|
tr_lockFree( h->lock );
|
||||||
free( h->tag );
|
free( h->tag );
|
||||||
free( h );
|
free( h );
|
||||||
fprintf( stderr, "libtransmission closed cleanly.\n" );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
tr_torrent **
|
tr_torrent **
|
||||||
|
|
Loading…
Reference in a new issue