diff --git a/src/gtkui/settings.cc b/src/gtkui/settings.cc index a701eb2fa..1fdd583f6 100644 --- a/src/gtkui/settings.cc +++ b/src/gtkui/settings.cc @@ -31,10 +31,17 @@ static void redisplay_playlists () pl_notebook_populate (); } +static const ComboItem playlist_tabs_options[] = { + ComboItem (N_("Always"), PlaylistTabVisibility::Always), + ComboItem (N_("Auto-hide"), PlaylistTabVisibility::AutoHide), + ComboItem (N_("Never"), PlaylistTabVisibility::Never) +}; + static const PreferencesWidget gtkui_widgets[] = { WidgetLabel (N_("Playlist Tabs")), - WidgetCheck (N_("Always show tabs"), - WidgetBool ("gtkui", "playlist_tabs_visible", show_hide_playlist_tabs)), + WidgetCombo (N_("Show playlist tabs:"), + WidgetInt ("gtkui", "playlist_tabs_visible", show_hide_playlist_tabs), + {{playlist_tabs_options}}), WidgetCheck (N_("Show entry counts"), WidgetBool ("gtkui", "entry_count_visible", redisplay_playlists)), WidgetCheck (N_("Show close buttons"), diff --git a/src/gtkui/ui_gtk.cc b/src/gtkui/ui_gtk.cc index e61dfd404..1792a88c0 100644 --- a/src/gtkui/ui_gtk.cc +++ b/src/gtkui/ui_gtk.cc @@ -49,7 +49,7 @@ static const char * const gtkui_defaults[] = { "infoarea_show_vis", "TRUE", "infoarea_visible", "TRUE", "menu_visible", "TRUE", - "playlist_tabs_visible", "TRUE", + "playlist_tabs_visible", aud::numeric_string::str, "statusbar_visible", "TRUE", "entry_count_visible", "FALSE", "close_button_visible", "TRUE", @@ -970,7 +970,7 @@ bool GtkUI::init () AUDDBG ("playlist associate\n"); pl_notebook_populate (); - g_signal_connect (slider, "change-value", (GCallback) ui_slider_change_value_cb , nullptr); + g_signal_connect (slider, "change-value", (GCallback) ui_slider_change_value_cb, nullptr); g_signal_connect (slider, "button-press-event", (GCallback) ui_slider_button_press_cb, nullptr); g_signal_connect (slider, "button-release-event", (GCallback) ui_slider_button_release_cb, nullptr); diff --git a/src/gtkui/ui_playlist_notebook.cc b/src/gtkui/ui_playlist_notebook.cc index a3dda916b..d196ffce0 100644 --- a/src/gtkui/ui_playlist_notebook.cc +++ b/src/gtkui/ui_playlist_notebook.cc @@ -581,6 +581,9 @@ GtkWidget * pl_notebook_new () void show_hide_playlist_tabs () { - gtk_notebook_set_show_tabs ((GtkNotebook *) pl_notebook, aud_get_bool ("gtkui", - "playlist_tabs_visible") || Playlist::n_playlists () > 1); + int playlist_tabs_visible = aud_get_int ("gtkui", "playlist_tabs_visible"); + bool show_tabs = playlist_tabs_visible != PlaylistTabVisibility::Never && + (playlist_tabs_visible != PlaylistTabVisibility::AutoHide || + Playlist::n_playlists () > 1); + gtk_notebook_set_show_tabs ((GtkNotebook *) pl_notebook, show_tabs); } diff --git a/src/gtkui/ui_playlist_notebook.h b/src/gtkui/ui_playlist_notebook.h index 317997cdd..0d2640bb0 100644 --- a/src/gtkui/ui_playlist_notebook.h +++ b/src/gtkui/ui_playlist_notebook.h @@ -24,6 +24,12 @@ class Playlist; +enum PlaylistTabVisibility { + Always, + AutoHide, + Never +}; + extern GtkWidget * pl_notebook; GtkWidget * pl_notebook_new ();