]> git.sesse.net Git - nageru/commitdiff
Fix a crash when trying to load/save files and CEF is active.
authorSteinar H. Gunderson <sgunderson@bigfoot.com>
Sun, 22 Apr 2018 13:17:13 +0000 (15:17 +0200)
committerSteinar H. Gunderson <sgunderson@bigfoot.com>
Sun, 22 Apr 2018 13:17:32 +0000 (15:17 +0200)
input_mapping_dialog.cpp
midi_mapping_dialog.cpp

index f303280e62215059f246176e7db232ec2a161af8..9e12c98c46cbd26e3a480a9ec76380faf9f7b8c9 100644 (file)
@@ -266,8 +266,14 @@ void InputMappingDialog::updown_clicked(int direction)
 
 void InputMappingDialog::save_clicked()
 {
+#if HAVE_CEF
+       // The native file dialog uses GTK+, which interferes with CEF's use of the GLib main loop.
+       QFileDialog::Option options(QFileDialog::DontUseNativeDialog);
+#else
+       QFileDialog::Option options;
+#endif
        QString filename = QFileDialog::getSaveFileName(this,
-               "Save input mapping", QString(), tr("Mapping files (*.mapping)"));
+               "Save input mapping", QString(), tr("Mapping files (*.mapping)"), /*selectedFilter=*/nullptr, options);
        if (!filename.endsWith(".mapping")) {
                filename += ".mapping";
        }
@@ -280,8 +286,14 @@ void InputMappingDialog::save_clicked()
 
 void InputMappingDialog::load_clicked()
 {
+#if HAVE_CEF
+       // The native file dialog uses GTK+, which interferes with CEF's use of the GLib main loop.
+       QFileDialog::Option options(QFileDialog::DontUseNativeDialog);
+#else
+       QFileDialog::Option options;
+#endif
        QString filename = QFileDialog::getOpenFileName(this,
-               "Load input mapping", QString(), tr("Mapping files (*.mapping)"));
+               "Load input mapping", QString(), tr("Mapping files (*.mapping)"), /*selectedFilter=*/nullptr, options);
        InputMapping new_mapping;
        if (!load_input_mapping_from_file(devices, filename.toStdString(), &new_mapping)) {
                QMessageBox box;
index 4a4ecfbfee7c2218910412df584c0f7fc5cc0af7..89656039698b3fe47d36a4e26f7a73767f876d09 100644 (file)
@@ -280,9 +280,15 @@ void MIDIMappingDialog::cancel_clicked()
 
 void MIDIMappingDialog::save_clicked()
 {
+#if HAVE_CEF
+       // The native file dialog uses GTK+, which interferes with CEF's use of the GLib main loop.
+       QFileDialog::Option options(QFileDialog::DontUseNativeDialog);
+#else
+       QFileDialog::Option options;
+#endif
        unique_ptr<MIDIMappingProto> new_mapping = construct_mapping_proto_from_ui();
        QString filename = QFileDialog::getSaveFileName(this,
-               "Save MIDI mapping", QString(), tr("Mapping files (*.midimapping)"));
+               "Save MIDI mapping", QString(), tr("Mapping files (*.midimapping)"), /*selectedFilter=*/nullptr, options);
        if (!filename.endsWith(".midimapping")) {
                filename += ".midimapping";
        }
@@ -295,8 +301,14 @@ void MIDIMappingDialog::save_clicked()
 
 void MIDIMappingDialog::load_clicked()
 {
+#if HAVE_CEF
+       // The native file dialog uses GTK+, which interferes with CEF's use of the GLib main loop.
+       QFileDialog::Option options(QFileDialog::DontUseNativeDialog);
+#else
+       QFileDialog::Option options;
+#endif
        QString filename = QFileDialog::getOpenFileName(this,
-               "Load MIDI mapping", QString(), tr("Mapping files (*.midimapping)"));
+               "Load MIDI mapping", QString(), tr("Mapping files (*.midimapping)"), /*selectedFilter=*/nullptr, options);
        MIDIMappingProto new_mapping;
        if (!load_midi_mapping_from_file(filename.toStdString(), &new_mapping)) {
                QMessageBox box;