Skip to content

Commit 8e22709

Browse files
committed
Add option to always resume in paused state (fixes #3222)
1 parent 5415962 commit 8e22709

File tree

5 files changed

+45
-1
lines changed

5 files changed

+45
-1
lines changed

plugins/gtkui/callbacks.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -850,6 +850,10 @@ void
850850
on_resume_last_session_toggled (GtkToggleButton *togglebutton,
851851
gpointer user_data);
852852

853+
void
854+
on_resume_always_paused_toggled (GtkToggleButton *togglebutton,
855+
gpointer user_data);
856+
853857
void
854858
on_jump_to_current_track1_activate (GtkMenuItem *menuitem,
855859
gpointer user_data);

plugins/gtkui/deadbeef.glade

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3408,6 +3408,26 @@ Only prevent clipping</property>
34083408
</packing>
34093409
</child>
34103410

3411+
<child>
3412+
<widget class="GtkCheckButton" id="resume_always_paused">
3413+
<property name="visible">True</property>
3414+
<property name="can_focus">True</property>
3415+
<property name="label" translatable="yes">Always resume session in paused state</property>
3416+
<property name="use_underline">True</property>
3417+
<property name="relief">GTK_RELIEF_NORMAL</property>
3418+
<property name="focus_on_click">True</property>
3419+
<property name="active">False</property>
3420+
<property name="inconsistent">False</property>
3421+
<property name="draw_indicator">True</property>
3422+
<signal name="toggled" handler="on_resume_always_paused_toggled" last_modification_time="Fri, 03 Oct 2025 12:51:07 GMT"/>
3423+
</widget>
3424+
<packing>
3425+
<property name="padding">0</property>
3426+
<property name="expand">False</property>
3427+
<property name="fill">False</property>
3428+
</packing>
3429+
</child>
3430+
34113431
<child>
34123432
<widget class="GtkCheckButton" id="ignore_archives">
34133433
<property name="visible">True</property>

plugins/gtkui/interface.c

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1605,6 +1605,7 @@ create_prefwin (void)
16051605
GtkWidget *cli_add_to_playlist;
16061606
GtkWidget *cli_playlist_name;
16071607
GtkWidget *resume_last_session;
1608+
GtkWidget *resume_always_paused;
16081609
GtkWidget *ignore_archives;
16091610
GtkWidget *reset_autostop;
16101611
GtkWidget *reset_autostopalbum;
@@ -2135,6 +2136,10 @@ create_prefwin (void)
21352136
gtk_widget_show (resume_last_session);
21362137
gtk_box_pack_start (GTK_BOX (vbox8), resume_last_session, FALSE, FALSE, 0);
21372138

2139+
resume_always_paused = gtk_check_button_new_with_mnemonic (_("Always resume session in paused state"));
2140+
gtk_widget_show (resume_always_paused);
2141+
gtk_box_pack_start (GTK_BOX (vbox8), resume_always_paused, FALSE, FALSE, 0);
2142+
21382143
ignore_archives = gtk_check_button_new_with_mnemonic (_("Don't add from archives when adding folders"));
21392144
gtk_widget_show (ignore_archives);
21402145
gtk_box_pack_start (GTK_BOX (vbox8), ignore_archives, FALSE, FALSE, 0);
@@ -3317,6 +3322,9 @@ create_prefwin (void)
33173322
g_signal_connect ((gpointer) resume_last_session, "toggled",
33183323
G_CALLBACK (on_resume_last_session_toggled),
33193324
NULL);
3325+
g_signal_connect ((gpointer) resume_always_paused, "toggled",
3326+
G_CALLBACK (on_resume_always_paused_toggled),
3327+
NULL);
33203328
g_signal_connect ((gpointer) ignore_archives, "toggled",
33213329
G_CALLBACK (on_ignore_archives_toggled),
33223330
NULL);
@@ -3630,6 +3638,7 @@ create_prefwin (void)
36303638
GLADE_HOOKUP_OBJECT (prefwin, cli_add_to_playlist, "cli_add_to_playlist");
36313639
GLADE_HOOKUP_OBJECT (prefwin, cli_playlist_name, "cli_playlist_name");
36323640
GLADE_HOOKUP_OBJECT (prefwin, resume_last_session, "resume_last_session");
3641+
GLADE_HOOKUP_OBJECT (prefwin, resume_always_paused, "resume_always_paused");
36333642
GLADE_HOOKUP_OBJECT (prefwin, ignore_archives, "ignore_archives");
36343643
GLADE_HOOKUP_OBJECT (prefwin, reset_autostop, "reset_autostop");
36353644
GLADE_HOOKUP_OBJECT (prefwin, reset_autostopalbum, "reset_autostopalbum");

plugins/gtkui/prefwin/prefwinplayback.c

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,9 @@ prefwin_init_playback_tab (GtkWidget *_prefwin) {
6666
// resume last session
6767
prefwin_set_toggle_button("resume_last_session", deadbeef->conf_get_int ("resume_last_session", 1));
6868

69+
// resume always paused
70+
prefwin_set_toggle_button("resume_always_paused", deadbeef->conf_get_int ("resume_always_paused", 0));
71+
6972
// add from archives
7073
prefwin_set_toggle_button("ignore_archives", deadbeef->conf_get_int ("ignore_archives", 1));
7174

@@ -149,6 +152,14 @@ on_resume_last_session_toggled (GtkToggleButton *togglebutton,
149152
deadbeef->conf_set_int ("resume_last_session", active);
150153
}
151154

155+
void
156+
on_resume_always_paused_toggled (GtkToggleButton *togglebutton,
157+
gpointer user_data)
158+
{
159+
int active = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (togglebutton));
160+
deadbeef->conf_set_int ("resume_always_paused", active);
161+
}
162+
152163
void
153164
on_gui_plugin_changed (GtkComboBox *combobox,
154165
gpointer user_data)

src/main.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -838,7 +838,7 @@ save_resume_state (void) {
838838
int playtrack = -1;
839839
int playlist = -1;
840840
playlist_t *plt = pl_get_playlist (trk);
841-
int paused = (output->state () == DDB_PLAYBACK_STATE_PAUSED);
841+
int paused = (output->state () == DDB_PLAYBACK_STATE_PAUSED) || (conf_get_int ("resume_always_paused", 0));
842842
if (trk && plt) {
843843
playlist = plt_get_idx_of (plt);
844844
playtrack = plt_get_item_idx (plt, trk, PL_MAIN);

0 commit comments

Comments
 (0)