/////////////////////////////////////////////////////////////////////////////
-// Name: private.h
+// Name: wx/motif/private.h
// Purpose: Private declarations for wxMotif port
// Author: Julian Smart
// Modified by:
#define wxCHECK_LESSTIF_VERSION( major, minor ) \
( LesstifVersion >= (major) * 1000 + (minor) )
-#define wxCHECK_LESSTIF() ( defined(LesstifVersion) && LesstifVersion > 0 )
+#define wxCHECK_LESSTIF() ( __WXLESSTIF__ )
+
+// some compilers (e.g. Sun CC) give warnings when treating string literals as
+// (non const) "char *" but many Motif functions take "char *" parameters which
+// are really "const char *" so use this macro to suppress the warnings when we
+// know it's ok
+#define wxMOTIF_STR(x) wx_const_cast(char *, x)
// ----------------------------------------------------------------------------
// Miscellaneous functions
// ----------------------------------------------------------------------------
// All widgets should have this as their resize proc.
-extern void wxWidgetResizeProc(Widget w, XConfigureEvent *event,
+extern void wxWidgetResizeProc(Widget w, XConfigureEvent *event,
String args[], int *num_args);
// For repainting arbitrary windows
-void wxUniversalRepaintProc(Widget w, XtPointer WXUNUSED(c_data),
+void wxUniversalRepaintProc(Widget w, XtPointer WXUNUSED(c_data),
XEvent *event, char *);
// ----------------------------------------------------------------------------
// ----------------------------------------------------------------------------
// Creates a bitmap with transparent areas drawn in the given colour.
-wxBitmap wxCreateMaskedBitmap(const wxBitmap& bitmap, wxColour& colour);
+wxBitmap wxCreateMaskedBitmap(const wxBitmap& bitmap, const wxColour& colour);
// ----------------------------------------------------------------------------
// key events related functions
// ----------------------------------------------------------------------------
extern bool wxTranslateMouseEvent(wxMouseEvent& wxevent, wxWindow *win,
- Widget widget, XEvent *xevent);
+ Widget widget, const XEvent *xevent);
extern bool wxTranslateKeyEvent(wxKeyEvent& wxevent, wxWindow *win,
- Widget widget, XEvent *xevent);
+ Widget widget, const XEvent *xevent);
extern void wxDoChangeForegroundColour(WXWidget widget,
wxColour& foregroundColour);
extern void wxDoChangeBackgroundColour(WXWidget widget,
- wxColour& backgroundColour,
- bool changeArmColour = FALSE);
-extern void wxDoChangeFont(WXWidget widget, wxFont& font);
+ const wxColour& backgroundColour,
+ bool changeArmColour = false);
+extern void wxDoChangeFont(WXWidget widget, const wxFont& font);
+extern void wxGetTextExtent(WXDisplay* display, const wxFont& font,
+ double scale,
+ const wxString& string, int* width, int* height,
+ int* ascent, int* descent);
+extern void wxGetTextExtent(const wxWindow* window, const wxString& str,
+ int* width, int* height,
+ int* ascent, int* descent);
#define wxNO_COLORS 0x00
#define wxBACK_COLORS 0x01
XmString wxStringToXmString( const wxString& string );
XmString wxStringToXmString( const char* string );
-// XmString made easy to use in wxWindows (and has an added benefit of
+// XmString made easy to use in wxWidgets (and has an added benefit of
// cleaning up automatically)
class wxXmString
{
+ void Init(const char *str)
+ {
+ m_string = XmStringCreateLtoR((char *)str, XmSTRING_DEFAULT_CHARSET);
+ }
+
public:
wxXmString(const char* str)
{
- m_string = XmStringCreateLtoR((char *)str, XmSTRING_DEFAULT_CHARSET);
+ Init(str);
}
wxXmString(const wxString& str)
{
- m_string = XmStringCreateLtoR((char *)str.c_str(),
- XmSTRING_DEFAULT_CHARSET);
+ Init(str.mb_str());
+ }
+
+ wxXmString(const wxCStrData& str)
+ {
+ Init(str);
}
// just to avoid calling XmStringFree()
wxXmString(const XmString& string) { m_string = string; }
~wxXmString() { XmStringFree(m_string); }
-
+
// semi-implicit conversion to XmString (shouldn't rely on implicit
// conversion because many of Motif functions are macros)
XmString operator()() const { return m_string; }
-
+
private:
XmString m_string;
};