From 6bd5afea8fd1d2b5233922c30b0e74f328ecfac3 Mon Sep 17 00:00:00 2001 From: Jonathan Li Date: Sat, 2 Jun 2018 10:17:22 +0100 Subject: [PATCH] cdvdgigaherz:gtk: Simplify GUI dialog Avoid always setting the dialog to the centre of the screen - the GTK+3 documentation advises against it. Avoid using a GUI callback - it's unnecessary since the value can just be retrieved afterwards. Simplify the GUI construction - a container to handle layout isn't necessary due to the GUI's lack of complexity. --- plugins/cdvdGigaherz/src/Unix/GtkGui.cpp | 29 ++++++------------------ 1 file changed, 7 insertions(+), 22 deletions(-) diff --git a/plugins/cdvdGigaherz/src/Unix/GtkGui.cpp b/plugins/cdvdGigaherz/src/Unix/GtkGui.cpp index e4a06c3cc7..a9f1646a9e 100644 --- a/plugins/cdvdGigaherz/src/Unix/GtkGui.cpp +++ b/plugins/cdvdGigaherz/src/Unix/GtkGui.cpp @@ -18,12 +18,6 @@ std::vector GetOpticalDriveList(); -static void ComboboxCallback(GtkComboBoxText *combobox, gpointer data) -{ - Settings *settings = reinterpret_cast(data); - settings->Set("drive", gtk_combo_box_text_get_active_text(combobox)); -} - void configure() { ReadSettings(); @@ -47,25 +41,16 @@ void configure() gtk_combo_box_set_active(GTK_COMBO_BOX(combobox), n); } -#if GTK_MAJOR_VERSION >= 3 - GtkWidget *box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); -#else - GtkWidget *box = gtk_vbox_new(0, 10); -#endif - gtk_box_pack_start(GTK_BOX(box), label, 0, 0, 0); - gtk_box_pack_start(GTK_BOX(box), combobox, 0, 0, 10); + GtkContainer *content_area = GTK_CONTAINER(gtk_dialog_get_content_area(GTK_DIALOG(dialog))); + gtk_container_add(content_area, label); + gtk_container_add(content_area, combobox); - GtkWidget *content_area = gtk_dialog_get_content_area(GTK_DIALOG(dialog)); - gtk_container_add(GTK_CONTAINER(content_area), box); - - Settings settings_copy = g_settings; - g_signal_connect(combobox, "changed", G_CALLBACK(ComboboxCallback), &settings_copy); - - gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_CENTER_ALWAYS); gtk_widget_show_all(dialog); if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) { - g_settings = settings_copy; - WriteSettings(); + if (const char *selected_drive = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(combobox))) { + g_settings.Set("drive", selected_drive); + WriteSettings(); + } } gtk_widget_destroy(dialog); }