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 ();