Allow the routing window to be resized and give it scrollbars

This commit is contained in:
Geoffrey D. Bennett
2023-11-26 22:57:52 +10:30
parent 19ccbbb304
commit d31bd3380e
2 changed files with 22 additions and 1 deletions

View File

@@ -429,6 +429,24 @@ static gboolean window_levels_close_request(GtkWindow *w, gpointer data) {
return true; return true;
} }
// wrap a scrolled window around the controls
static void create_scrollable_window(GtkWidget *window, GtkWidget *controls) {
GtkWidget *scrolled_window = gtk_scrolled_window_new();
gtk_scrolled_window_set_policy(
GTK_SCROLLED_WINDOW(scrolled_window),
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC
);
gtk_scrolled_window_set_child(
GTK_SCROLLED_WINDOW(scrolled_window), controls
);
gtk_scrolled_window_set_propagate_natural_height(GTK_SCROLLED_WINDOW(scrolled_window), TRUE);
gtk_scrolled_window_set_propagate_natural_width(GTK_SCROLLED_WINDOW(scrolled_window), TRUE);
gtk_window_set_child(GTK_WINDOW(window), scrolled_window);
gtk_window_set_resizable(GTK_WINDOW(window), TRUE);
}
GtkWidget *create_iface_mixer_main(struct alsa_card *card) { GtkWidget *create_iface_mixer_main(struct alsa_card *card) {
card->has_speaker_switching = card->has_speaker_switching =
!!get_elem_by_name(card->elems, "Speaker Switching Playback Enum"); !!get_elem_by_name(card->elems, "Speaker Switching Playback Enum");
@@ -445,7 +463,7 @@ GtkWidget *create_iface_mixer_main(struct alsa_card *card) {
card, "Routing", G_CALLBACK(window_routing_close_request) card, "Routing", G_CALLBACK(window_routing_close_request)
); );
gtk_window_set_child(GTK_WINDOW(card->window_routing), routing_top); create_scrollable_window(card->window_routing, routing_top);
GtkWidget *mixer_top = create_mixer_controls(card); GtkWidget *mixer_top = create_mixer_controls(card);

View File

@@ -256,6 +256,9 @@ static GtkWidget *make_preset_menu_button(struct alsa_card *card) {
static void create_routing_grid(struct alsa_card *card) { static void create_routing_grid(struct alsa_card *card) {
GtkWidget *routing_grid = card->routing_grid = gtk_grid_new(); GtkWidget *routing_grid = card->routing_grid = gtk_grid_new();
gtk_widget_set_halign(routing_grid, GTK_ALIGN_CENTER);
gtk_widget_set_valign(routing_grid, GTK_ALIGN_CENTER);
GtkWidget *preset_menu_button = make_preset_menu_button(card); GtkWidget *preset_menu_button = make_preset_menu_button(card);
gtk_grid_attach( gtk_grid_attach(
GTK_GRID(routing_grid), preset_menu_button, 0, 0, 1, 1 GTK_GRID(routing_grid), preset_menu_button, 0, 0, 1, 1