Skip to content

Commit e8fe283

Browse files
committed
Initialize shuffle and repeat radio buttons to current state.
1 parent a264cb4 commit e8fe283

File tree

1 file changed

+49
-6
lines changed

1 file changed

+49
-6
lines changed

src/headerbarui.c

+49-6
Original file line numberDiff line numberDiff line change
@@ -480,6 +480,28 @@ toggle_and_get_active_menu_item(const gchar *glade_id)
480480

481481
// Shuffle mode
482482

483+
static void
484+
action_shuffle_mode_init(GSimpleAction *action)
485+
{
486+
ddb_shuffle_t shuffle = deadbeef->streamer_get_shuffle();
487+
switch (shuffle)
488+
{
489+
case DDB_SHUFFLE_OFF:
490+
g_simple_action_set_state (action, g_variant_new_string("off"));
491+
break;
492+
case DDB_SHUFFLE_TRACKS:
493+
g_simple_action_set_state (action, g_variant_new_string("tracks"));
494+
break;
495+
case DDB_SHUFFLE_RANDOM:
496+
g_simple_action_set_state (action, g_variant_new_string("random"));
497+
break;
498+
case DDB_SHUFFLE_ALBUMS:
499+
g_simple_action_set_state (action, g_variant_new_string("albums"));
500+
break;
501+
}
502+
503+
}
504+
483505
static void
484506
action_shuffle_mode_activate(GSimpleAction *action, GVariant *parameter, gpointer user_data)
485507
{
@@ -530,6 +552,25 @@ order_random_activate(GtkMenuItem *menuitem, gpointer user_data)
530552

531553
// Repeat mode
532554

555+
static void
556+
action_repeat_mode_init(GSimpleAction *action)
557+
{
558+
ddb_repeat_t repeat = deadbeef->streamer_get_repeat();
559+
switch (repeat)
560+
{
561+
case DDB_REPEAT_OFF:
562+
g_simple_action_set_state (action, g_variant_new_string("off"));
563+
break;
564+
case DDB_REPEAT_SINGLE:
565+
g_simple_action_set_state (action, g_variant_new_string("single"));
566+
break;
567+
case DDB_REPEAT_ALL:
568+
g_simple_action_set_state (action, g_variant_new_string("all"));
569+
break;
570+
}
571+
572+
}
573+
533574
static void
534575
action_repeat_mode_activate(GSimpleAction *action, GVariant *parameter, gpointer user_data)
535576
{
@@ -845,12 +886,12 @@ get_display_action_title (const char *title) {
845886
}
846887

847888
#ifndef strdupa
848-
# define strdupa(s) \
849-
({ \
850-
const char *old = (s); \
851-
size_t len = strlen (old) + 1; \
852-
char *newstr = (char *) alloca (len); \
853-
(char *) memcpy (newstr, old, len); \
889+
# define strdupa(s) \
890+
({ \
891+
const char *old = (s); \
892+
size_t len = strlen (old) + 1; \
893+
char *newstr = (char *) alloca (len); \
894+
(char *) memcpy (newstr, old, len); \
854895
})
855896
#endif
856897

@@ -1142,10 +1183,12 @@ void window_init_hook (void *userdata) {
11421183
hookup_action_to_radio_menu_item(G_ACTION_MAP(group), "shufflemode", G_CALLBACK(order_shuffle_activate), "order_shuffle");
11431184
hookup_action_to_radio_menu_item(G_ACTION_MAP(group), "shufflemode", G_CALLBACK(order_shuffle_albums_activate), "order_shuffle_albums");
11441185
hookup_action_to_radio_menu_item(G_ACTION_MAP(group), "shufflemode", G_CALLBACK(order_random_activate), "order_random");
1186+
action_shuffle_mode_init (g_action_map_lookup_action (G_ACTION_MAP (group), "shufflemode"));
11451187

11461188
hookup_action_to_radio_menu_item(G_ACTION_MAP(group), "repeatmode", G_CALLBACK(loop_disable_activate), "loop_disable");
11471189
hookup_action_to_radio_menu_item(G_ACTION_MAP(group), "repeatmode", G_CALLBACK(loop_single_activate), "loop_single");
11481190
hookup_action_to_radio_menu_item(G_ACTION_MAP(group), "repeatmode", G_CALLBACK(loop_all_albums_activate), "loop_all");
1191+
action_repeat_mode_init (g_action_map_lookup_action (G_ACTION_MAP (group), "repeatmode"));
11491192

11501193

11511194
g_object_set(G_OBJECT(headerbar), "spacing", headerbarui_flags.button_spacing, NULL);

0 commit comments

Comments
 (0)