diff options
-rw-r--r-- | src/haiku_support.h | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/haiku_support.h b/src/haiku_support.h index f20b2e766c8..e6560f401ac 100644 --- a/src/haiku_support.h +++ b/src/haiku_support.h @@ -348,6 +348,24 @@ struct haiku_menu_bar_state_event #define BE_RECT_WIDTH(rect) (ceil (((rect).right - (rect).left) + 1)) #endif /* __cplusplus */ +/* C++ code cannot include lisp.h, but file dialogs need to be able + to bind to the specpdl and handle quitting correctly. */ + +#ifdef __cplusplus + +#if SIZE_MAX > 0xffffffff +#define WRAP_SPECPDL_REF 1 +#endif +#ifdef WRAP_SPECPDL_REF +typedef struct { ptrdiff_t bytes; } specpdl_ref; +#else +typedef ptrdiff_t specpdl_ref; +#endif + +#else +#include "lisp.h" +#endif + #ifdef __cplusplus extern "C" { |