X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c60f15f01d082994f93d4ef50b572108d5a8a4d0..8366ae934aab9f835747b0c2e456231e8795fe78:/include/wx/defs.h diff --git a/include/wx/defs.h b/include/wx/defs.h index 4414fe5ecd..1438ff0cf9 100644 --- a/include/wx/defs.h +++ b/include/wx/defs.h @@ -37,6 +37,12 @@ #endif #endif // Win32 +#if defined(__WXMSW__) || defined(__WIN32__) + #if !defined(__WINDOWS__) + #define __WINDOWS__ + #endif +#endif + #ifdef __WXWINE__ #ifndef __WIN32__ #define __WIN32__ @@ -55,6 +61,9 @@ #include "wx/setup.h" +// check the consistency of the settings in setup.h +#include "wx/chkconf.h" + // old C++ headers (like ) declare classes in the global namespace // while the new, standard ones (like ) do it in std:: namespace // @@ -112,41 +121,26 @@ #define __HPUX__ #endif // HP-UX - #if defined(__APPLE__) - // MacOS X - #ifndef __WXMAC__ - #define __WXMAC__ - #endif - #ifndef __WXMAC_X__ - // This define really should not be necessary since __WXMAC__ - // combined with __UNIX__ is sufficient to differentiate - // Classic Mac OS from Mac OS X. However, some code has been - // added to workaround defects(?) in the bundled gcc compiler - // and these corrections are identified by __WXMAC_X__ - #define __WXMAC_X__ - #endif + #if defined(__WXMAC__) && defined(__DARWIN__) + // Mac OS X + + // Some code has been added to workaround defects(?) in the + // bundled gcc compiler. These corrections are identified by: + // __DARWIN__ for corrections necessary for Darwin (wxMac, wxMotif) #include - #endif // __APPLE__ + #endif // __WXMAC__ && __DARWIN__ #elif defined(applec) || \ defined(THINK_C) || \ (defined(__MWERKS__) && !defined(__INTEL__)) // MacOS -#elif defined(__WXMAC__) && defined(__APPLE__) - // MacOS X +#elif defined(__WXMAC__) && defined(__DARWIN__) + // Mac OS X #define __UNIX_LIKE__ - #ifndef __WXMAC__ - #define __WXMAC__ - #endif - #ifndef __WXMAC_X__ - // This define really should not be necessary since __WXMAC__ - // combined with __UNIX__ is sufficient to differentiate - // Classic Mac OS from Mac OS X. However, some code has been - // added to workaround defects(?) in the bundled gcc compiler - // and these corrections are identified by __WXMAC_X__ - #define __WXMAC_X__ - #endif + // Some code has been added to workaround defects(?) in the + // bundled gcc compiler. These corrections are identified by: + // __DARWIN__ for corrections necessary for Darwin (wxMac, wxMotif) #include #elif defined(__OS2__) @@ -187,8 +181,11 @@ #define __SYMANTECC__ #endif // compiler - // size_t is the same as unsigned int for all Windows compilers we know - #define wxSIZE_T_IS_UINT + // size_t is the same as unsigned int for all Windows compilers we know, + // so define it if it hadn't been done by configure yet + #if !defined(wxSIZE_T_IS_UINT) && !defined(wxSIZE_T_IS_ULONG) + #define wxSIZE_T_IS_UINT + #endif #endif // OS // if we're on a Unix system but didn't use configure (so that setup.h didn't @@ -279,11 +276,11 @@ #error "Target can't be both X and Windows" #elif !defined(__WXMOTIF__) && !defined(__WXMSW__) && !defined(__WXGTK__) && \ !defined(__WXPM__) && !defined(__WXMAC__) && !defined(__X__) && \ - !defined(__WXQT__) && !defined(__WXSTUBS__) && wxUSE_GUI + !defined(__WXMGL__) && wxUSE_GUI #ifdef __UNIX__ - #error "No Target! You should wx-config program for compilation flags!" + #error "No Target! You should use wx-config program for compilation flags!" #else // !Unix - #error "No Target! You should supplied makefiles for compilation!" + #error "No Target! You should use supplied makefiles for compilation!" #endif // Unix/!Unix #endif @@ -297,7 +294,10 @@ // compatibility code #if !wxUSE_GUI #undef WXWIN_COMPATIBILITY_2 + #undef WXWIN_COMPATIBILITY_2_2 + #define WXWIN_COMPATIBILITY_2 0 + #define WXWIN_COMPATIBILITY_2_2 0 #endif // !GUI // ============================================================================ @@ -372,20 +372,6 @@ typedef short int WXTYPE; // because -1 is a valid (and largely used) value for window id. typedef int wxWindowID; -// Macro to cut down on compiler warnings. -#if REMOVE_UNUSED_ARG - #define WXUNUSED(identifier) /* identifier */ -#else // stupid, broken compiler - #define WXUNUSED(identifier) identifier -#endif - -// some arguments are only used in debug mode, but unused in release one -#ifdef __WXDEBUG__ - #define WXUNUSED_UNLESS_DEBUG(param) param -#else - #define WXUNUSED_UNLESS_DEBUG(param) WXUNUSED(param) -#endif - // ---------------------------------------------------------------------------- // portable calling conventions macros // ---------------------------------------------------------------------------- @@ -406,7 +392,7 @@ typedef int wxWindowID; // wxCALLBACK should be used for the functions which are called back by // Windows (such as compare function for wxListCtrl) -#if defined(__WIN32__) +#if defined(__WIN32__) && !defined(__WXMICROWIN__) #define wxCALLBACK wxSTDCALL #else // no stdcall under Unix nor Win16 @@ -500,8 +486,8 @@ class WXDLLEXPORT wxObject; class WXDLLEXPORT wxEvent; #endif - /** symbolic constant used by all Find()-like functions returning positive - integer on success as failure indicator */ +// symbolic constant used by all Find()-like functions returning positive +// integer on success as failure indicator #define wxNOT_FOUND (-1) // ---------------------------------------------------------------------------- @@ -513,38 +499,36 @@ class WXDLLEXPORT wxEvent; #include "wx/debug.h" #endif -// NULL declaration +// NULL declaration: it must be defined as 0 for C++ programs (in particular, +// it must not be defined as "(void *)0" which is standard for C but completely +// breaks C++ code) #include -//@{ -/// delete pointer if it is not NULL and NULL it afterwards +// Macro to cut down on compiler warnings. +#if REMOVE_UNUSED_ARG + #define WXUNUSED(identifier) /* identifier */ +#else // stupid, broken compiler + #define WXUNUSED(identifier) identifier +#endif + +// some arguments are only used in debug mode, but unused in release one +#ifdef __WXDEBUG__ + #define WXUNUSED_UNLESS_DEBUG(param) param +#else + #define WXUNUSED_UNLESS_DEBUG(param) WXUNUSED(param) +#endif + +// delete pointer if it is not NULL and NULL it afterwards // (checking that it's !NULL before passing it to delete is just a // a question of style, because delete will do it itself anyhow, but it might // be considered as an error by some overzealous debugging implementations of // the library, so we do it ourselves) -#if defined(__SGI_CC__) -// Okay this is bad styling, but the native SGI compiler is very picky, it -// wont let you compare/assign between a NULL (void *) and another pointer -// type. To be really clean we'd need to pass in another argument, the type -// of p. -// Also note the use of 0L, this would allow future possible 64bit support -// (as yet untested) by ensuring that we zero all the bits in a pointer -// (which is always the same length as a long (at least with the LP64 standard) -// --- offer aug 98 -#define wxDELETE(p) if ( (p) ) { delete (p); p = 0L; } -#else #define wxDELETE(p) if ( (p) != NULL ) { delete p; p = NULL; } -#endif /* __SGI__CC__ */ // delete an array and NULL it (see comments above) -#if defined(__SGI_CC__) -// see above comment. -#define wxDELETEA(p) if ( (p) ) { delete [] (p); p = 0L; } -#else -#define wxDELETEA(p) if ( ((void *) (p)) != NULL ) { delete [] p; p = NULL; } -#endif /* __SGI__CC__ */ +#define wxDELETEA(p) if ( (p) ) { delete [] (p); p = NULL; } -/// size of statically declared array +// size of statically declared array #define WXSIZEOF(array) (sizeof(array)/sizeof(array[0])) // ---------------------------------------------------------------------------- @@ -606,7 +590,6 @@ enum wxGTK_WIN32, // GTK on Win32 wxGTK_OS2, // GTK on OS/2 wxGTK_BEOS, // GTK on BeOS - wxQT, // Qt wxGEOS, // GEOS wxOS2_PM, // OS/2 Workplace wxWINDOWS, // Windows or WfW @@ -862,7 +845,10 @@ enum wxAlignment wxALIGN_CENTRE_VERTICAL = wxALIGN_CENTER_VERTICAL, wxALIGN_CENTER = (wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL), - wxALIGN_CENTRE = wxALIGN_CENTER + wxALIGN_CENTRE = wxALIGN_CENTER, + + // a mask to extract alignment from the combination of flags + wxALIGN_MASK = 0x0f00 }; enum wxStretch @@ -872,7 +858,26 @@ enum wxStretch wxGROW = 0x2000, wxEXPAND = wxGROW, wxSHAPED = 0x4000, - wxADJUST_MINSIZE = 0x8000 + wxADJUST_MINSIZE = 0x8000, + wxTILE = 0xc000 +}; + +// border flags: the values are chosen for backwards compatibility +enum wxBorder +{ + // this is different from wxBORDER_NONE as by default the controls do have + // border + wxBORDER_DEFAULT = 0, + + wxBORDER_NONE = 0x00200000, + wxBORDER_STATIC = 0x01000000, + wxBORDER_SIMPLE = 0x02000000, + wxBORDER_RAISED = 0x04000000, + wxBORDER_SUNKEN = 0x08000000, + wxBORDER_DOUBLE = 0x10000000, + + // a mask to extract border style from the combination of flags + wxBORDER_MASK = 0x1f200000 }; // ---------------------------------------------------------------------------- @@ -899,31 +904,41 @@ enum wxStretch #define wxHSCROLL 0x40000000 #define wxCAPTION 0x20000000 -// New styles -#define wxDOUBLE_BORDER 0x10000000 -#define wxSUNKEN_BORDER 0x08000000 -#define wxRAISED_BORDER 0x04000000 -#define wxBORDER 0x02000000 -#define wxSIMPLE_BORDER wxBORDER -#define wxSTATIC_BORDER 0x01000000 -#define wxTRANSPARENT_WINDOW 0x00100000 -#define wxNO_BORDER 0x00200000 +// New styles (border styles are now in their own enum) +#define wxDOUBLE_BORDER wxBORDER_DOUBLE +#define wxSUNKEN_BORDER wxBORDER_SUNKEN +#define wxRAISED_BORDER wxBORDER_RAISED +#define wxBORDER wxBORDER_SIMPLE +#define wxSIMPLE_BORDER wxBORDER_SIMPLE +#define wxSTATIC_BORDER wxBORDER_STATIC +#define wxNO_BORDER wxBORDER_NONE // Override CTL3D etc. control colour processing to allow own background // colour. -// OBSOLETE - use wxNO_3D instead -#define wxUSER_COLOURS 0x00800000 // Override CTL3D or native 3D styles for children #define wxNO_3D 0x00800000 +// OBSOLETE - use wxNO_3D instead +#define wxUSER_COLOURS wxNO_3D + +// wxALWAYS_SHOW_SB: instead of hiding the scrollbar when it is not needed, +// disable it - but still show (see also wxLB_ALWAYS_SB style) +// +// NB: as this style is only supported by wxUniversal so far as it doesn't use +// wxUSER_COLOURS/wxNO_3D, we reuse the same style value +#define wxALWAYS_SHOW_SB 0x00800000 + // Clip children when painting, which reduces flicker in e.g. frames and // splitter windows, but can't be used in a panel where a static box must be // 'transparent' (panel paints the background for it) #define wxCLIP_CHILDREN 0x00400000 + // Note we're reusing the wxCAPTION style because we won't need captions // for subwindows/controls #define wxCLIP_SIBLINGS 0x20000000 +#define wxTRANSPARENT_WINDOW 0x00100000 + // Add this style to a panel to get tab traversal working outside of dialogs // (on by default for wxPanel, wxDialog, wxScrolledWindow) #define wxTAB_TRAVERSAL 0x00080000 @@ -932,10 +947,15 @@ enum wxStretch // Windows, it won't normally get the dialog navigation key events) #define wxWANTS_CHARS 0x00040000 -// Make window retained (mostly Motif, I think) +// Make window retained (mostly Motif, I think) -- obsolete (VZ)? #define wxRETAINED 0x00020000 #define wxBACKINGSTORE wxRETAINED +// set this flag to create a special popup window: it will be always shown on +// top of other windows, will capture the mouse and will be dismissed when the +// mouse is clicked outside of it or if it loses focus in any other way +#define wxPOPUP_WINDOW 0x00020000 + // don't invalidate the whole window (resulting in a PAINT event) when the // window is resized (currently, makes sense for wxMSW only) #define wxNO_FULL_REPAINT_ON_RESIZE 0x00010000 @@ -1062,25 +1082,18 @@ enum wxStretch #define wxLB_NEEDED_SB 0x0200 #define wxLB_ALWAYS_SB 0x0400 #define wxLB_HSCROLL wxHSCROLL +// always show an entire number of rows +#define wxLB_INT_HEIGHT 0x0800 -/* - * wxTextCtrl style flags - */ -// the flag bits 0x0001, 2, 4 and 8 are free but should be used only for the -// things which don't make sense for a text control used by wxTextEntryDialog -// because they would otherwise conflict with wxOK, wxCANCEL, wxCENTRE -#define wxTE_READONLY 0x0010 -#define wxTE_MULTILINE 0x0020 -#define wxTE_PROCESS_TAB 0x0040 -// this style means to use RICHEDIT control and does something only under wxMSW -// and Win32 and is silently ignored under all other platforms -#define wxTE_RICH 0x0080 -#define wxTE_NO_VSCROLL 0x0100 -#define wxTE_AUTO_SCROLL 0x0200 -#define wxPROCESS_ENTER 0x0400 -#define wxPASSWORD 0x0800 -#define wxTE_PROCESS_ENTER wxPROCESS_ENTER -#define wxTE_PASSWORD wxPASSWORD +// use wxHSCROLL to not wrap text at all, wxTE_LINEWRAP to wrap it at any +// position and wxTE_WORDWRAP to wrap at words boundary +#define wxTE_DONTWRAP wxHSCROLL +#define wxTE_LINEWRAP 0x0800 +#define wxTE_WORDWRAP 0x0000 // it's just == !wxHSCROLL + +// deprecated synonyms +#define wxPROCESS_ENTER wxTE_PROCESS_ENTER +#define wxPASSWORD wxTE_PASSWORD /* * wxComboBox style flags @@ -1093,9 +1106,15 @@ enum wxStretch /* * wxRadioBox style flags */ +// should we number the items from left to right or from top to bottom in a 2d +// radiobox? +#define wxRA_LEFTTORIGHT 0x0001 +#define wxRA_TOPTOBOTTOM 0x0002 + // New, more intuitive names to specify majorDim argument #define wxRA_SPECIFY_COLS wxHORIZONTAL #define wxRA_SPECIFY_ROWS wxVERTICAL + // Old names for compatibility #define wxRA_HORIZONTAL wxHORIZONTAL #define wxRA_VERTICAL wxVERTICAL @@ -1121,8 +1140,8 @@ enum wxStretch #define wxSL_VERTICAL wxVERTICAL // 8 // The next one is obsolete - use scroll events instead #define wxSL_NOTIFY_DRAG 0x0000 -#define wxSL_AUTOTICKS 0x0010 -// #define wxSL_MANUALTICKS 0x0010 +#define wxSL_TICKS 0x0010 +#define wxSL_AUTOTICKS wxSL_TICKS // we don't support manual ticks #define wxSL_LABELS 0x0020 #define wxSL_LEFT 0x0040 #define wxSL_TOP 0x0080 @@ -1137,61 +1156,6 @@ enum wxStretch #define wxSB_HORIZONTAL wxHORIZONTAL #define wxSB_VERTICAL wxVERTICAL -/* - * wxButton flags (Win32 only) - */ -#define wxBU_AUTODRAW 0x0004 -#define wxBU_NOAUTODRAW 0x0000 -#define wxBU_LEFT 0x0040 -#define wxBU_TOP 0x0080 -#define wxBU_RIGHT 0x0100 -#define wxBU_BOTTOM 0x0200 - -/* - * wxTreeCtrl flags - */ -#define wxTR_HAS_BUTTONS 0x0004 -#define wxTR_EDIT_LABELS 0x0008 -#define wxTR_LINES_AT_ROOT 0x0010 - -#define wxTR_SINGLE 0x0000 -#define wxTR_MULTIPLE 0x0020 -#define wxTR_EXTENDED 0x0040 -#define wxTR_HAS_VARIABLE_ROW_HEIGHT 0x0080 -#define wxTR_NO_LINES 0x0100 -#define wxTR_MAC_BUTTONS 0x0200 -#define wxTR_ROW_LINES 0x0400 - -/* - * wxListCtrl flags - */ -#define wxLC_VRULES 0x0001 -#define wxLC_HRULES 0x0002 -#define wxLC_ICON 0x0004 -#define wxLC_SMALL_ICON 0x0008 -#define wxLC_LIST 0x0010 -#define wxLC_REPORT 0x0020 -#define wxLC_ALIGN_TOP 0x0040 -#define wxLC_ALIGN_LEFT 0x0080 -#define wxLC_AUTOARRANGE 0x0100 -#define wxLC_USER_TEXT 0x0200 -#define wxLC_EDIT_LABELS 0x0400 -#define wxLC_NO_HEADER 0x0800 -#define wxLC_NO_SORT_HEADER 0x1000 -#define wxLC_SINGLE_SEL 0x2000 -#define wxLC_SORT_ASCENDING 0x4000 -#define wxLC_SORT_DESCENDING 0x8000 - -#define wxLC_MASK_TYPE (wxLC_ICON | wxLC_SMALL_ICON | wxLC_LIST | wxLC_REPORT) -#define wxLC_MASK_ALIGN (wxLC_ALIGN_TOP | wxLC_ALIGN_LEFT) -#define wxLC_MASK_SORT (wxLC_SORT_ASCENDING | wxLC_SORT_DESCENDING) - -// Omitted because (a) too much detail (b) not enough style flags -// #define wxLC_NO_SCROLL -// #define wxLC_NO_LABEL_WRAP -// #define wxLC_OWNERDRAW_FIXED -// #define wxLC_SHOW_SEL_ALWAYS - /* * wxSpinButton flags. * Note that a wxSpinCtrl is sometimes defined as @@ -1216,21 +1180,23 @@ enum wxStretch #define wxSP_FULLSASH 0x0400 #define wxSP_3D (wxSP_3DBORDER | wxSP_3DSASH) -/* - * wxTabCtrl flags - */ -#define wxTC_MULTILINE 0x0000 -#define wxTC_RIGHTJUSTIFY 0x0010 -#define wxTC_FIXEDWIDTH 0x0020 -#define wxTC_OWNERDRAW 0x0040 - /* * wxNotebook flags */ #define wxNB_FIXEDWIDTH 0x0010 +#define wxNB_TOP 0x0000 // default #define wxNB_LEFT 0x0020 #define wxNB_RIGHT 0x0040 #define wxNB_BOTTOM 0x0080 +#define wxNB_MULTILINE 0x0100 + +/* + * wxTabCtrl flags + */ +#define wxTC_RIGHTJUSTIFY 0x0010 +#define wxTC_FIXEDWIDTH 0x0020 +#define wxTC_OWNERDRAW 0x0040 +#define wxTC_MULTILINE wxNB_MULTILINE /* * wxStatusBar95 flags @@ -1242,6 +1208,11 @@ enum wxStretch */ #define wxST_NO_AUTORESIZE 0x0001 +/* + * wxStaticBitmap flags + */ +#define wxBI_EXPAND wxEXPAND + /* * wxStaticLine flags */ @@ -1380,6 +1351,36 @@ enum wxStretch #define wxID_FILEDLGG 5900 #define wxID_HIGHEST 5999 +// ---------------------------------------------------------------------------- +// constants +// ---------------------------------------------------------------------------- + +// hit test results +enum wxHitTest +{ + wxHT_NOWHERE, + + // scrollbar + wxHT_SCROLLBAR_FIRST = wxHT_NOWHERE, + wxHT_SCROLLBAR_ARROW_LINE_1, // left or upper arrow to scroll by line + wxHT_SCROLLBAR_ARROW_LINE_2, // right or down + wxHT_SCROLLBAR_ARROW_PAGE_1, // left or upper arrow to scroll by page + wxHT_SCROLLBAR_ARROW_PAGE_2, // right or down + wxHT_SCROLLBAR_THUMB, // on the thumb + wxHT_SCROLLBAR_BAR_1, // bar to the left/above the thumb + wxHT_SCROLLBAR_BAR_2, // bar to the right/below the thumb + wxHT_SCROLLBAR_LAST, + + // window + wxHT_WINDOW_OUTSIDE, // not in this window at all + wxHT_WINDOW_INSIDE, // in the client area + wxHT_WINDOW_VERT_SCROLLBAR, // on the vertical scrollbar + wxHT_WINDOW_HORZ_SCROLLBAR, // on the horizontal scrollbar + wxHT_WINDOW_CORNER, // on the corner between 2 scrollbars + + wxHT_MAX +}; + // ---------------------------------------------------------------------------- // Possible SetSize flags // ---------------------------------------------------------------------------- @@ -1918,7 +1919,7 @@ typedef struct tagLOGPALETTE } LOGPALETTE; #endif //__WXPM__ -#if defined(__GNUWIN32__) || defined(__WXWINE__) +#if defined(__GNUWIN32__) || defined(__WXWINE__) || defined(__WXMICROWIN__) typedef int (*WXFARPROC)(); #elif defined(__WIN32__) typedef int (__stdcall *WXFARPROC)(); @@ -1961,7 +1962,6 @@ typedef void* WXGC; typedef void* WXRegion; typedef void* WXFont; typedef void* WXImage; -typedef void* WXCursor; typedef void* WXFontList; typedef unsigned long Atom; /* this might fail on a few architectures */ @@ -2029,6 +2029,10 @@ typedef struct _PangoFontDescription PangoFontDescription; #endif #endif // GTK +#ifdef __WXMGL__ +typedef struct window_t *WXWidget; +#endif // MGL + // This is required because of clashing macros in windows.h, which may be // included before or after wxWindows classes, and therefore must be // disabled here before any significant wxWindows headers are included. @@ -2070,7 +2074,7 @@ typedef struct _PangoFontDescription PangoFontDescription; #define DECLARE_NO_COPY_CLASS(classname) \ private: \ classname(const classname&); \ - classname& operator=(const classname&) + classname& operator=(const classname&); #endif // _WX_DEFS_H_