From db5c890e0d3fa2c04ed92712e3c22c2057d248c3 Mon Sep 17 00:00:00 2001 From: Andy Vandijck Date: Sat, 10 May 2025 09:35:41 +0200 Subject: [PATCH] Add option for generic file dialogs --- cmake/Options.cmake | 1 + src/wx/CMakeLists.txt | 5 +++++ src/wx/cmdevents.cpp | 2 ++ src/wx/compat_generic_file_dialog.h | 6 ++++++ src/wx/wxvbam.h | 1 + 5 files changed, 15 insertions(+) create mode 100644 src/wx/compat_generic_file_dialog.h diff --git a/cmake/Options.cmake b/cmake/Options.cmake index dfe2752e..0c49780a 100644 --- a/cmake/Options.cmake +++ b/cmake/Options.cmake @@ -15,6 +15,7 @@ if(WIN32 OR APPLE) endif() option(ENABLE_SDL3 "Use SDL3" ON) +option(ENABLE_GENERIC_FILE_DIALOGS "Use generic file dialogs" OFF) option(DISABLE_OPENGL "Disable OpenGL" OFF) option(ENABLE_SDL "Build the SDL port" ${ENABLE_SDL_DEFAULT}) option(ENABLE_WX "Build the wxWidgets port" ${BUILD_DEFAULT}) diff --git a/src/wx/CMakeLists.txt b/src/wx/CMakeLists.txt index a76abba5..3489e6f8 100644 --- a/src/wx/CMakeLists.txt +++ b/src/wx/CMakeLists.txt @@ -261,6 +261,11 @@ function(configure_wx_target target) _add_compile_definitions(${wxWidgets_DEFINITIONS_DEBUG}) endif() + # Generic file dialogs + if (ENABLE_GENERIC_FILE_DIALOGS) + _add_compile_definitions(USE_GENERIC_FILE_DIALOGS) + endif() + # No Metal if(NOT CMAKE_Metal_COMPILER) _add_compile_definitions(NO_METAL) diff --git a/src/wx/cmdevents.cpp b/src/wx/cmdevents.cpp index 839194b6..91589234 100644 --- a/src/wx/cmdevents.cpp +++ b/src/wx/cmdevents.cpp @@ -141,9 +141,11 @@ EVT_HANDLER(wxID_OPEN, "Open ROM...") "*.dmg.z;*.gb.z;*.gbc.z;*.cgb.z;*.sgb.z;" "*.zip;*.7z;*.rar|"); pats.append(wxALL_FILES); + wxFileDialog dlg(this, _("Open ROM file"), gba_rom_dir, "", pats, wxFD_OPEN | wxFD_FILE_MUST_EXIST); + dlg.SetFilterIndex(open_ft); if (ShowModal(&dlg) == wxID_OK) diff --git a/src/wx/compat_generic_file_dialog.h b/src/wx/compat_generic_file_dialog.h new file mode 100644 index 00000000..cee6bd2a --- /dev/null +++ b/src/wx/compat_generic_file_dialog.h @@ -0,0 +1,6 @@ +#ifdef USE_GENERIC_FILE_DIALOGS +#include "wx/generic/filedlgg.h" + +#undef wxFileDialog +#define wxFileDialog wxGenericFileDialog +#endif diff --git a/src/wx/wxvbam.h b/src/wx/wxvbam.h index d343425d..3fe17f5a 100644 --- a/src/wx/wxvbam.h +++ b/src/wx/wxvbam.h @@ -36,6 +36,7 @@ #endif #include "wx/wxlogdebug.h" +#include "wx/compat_generic_file_dialog.h" template void CheckPointer(T pointer)