/////////////////////////////////////////////////////////////////////////////
// Name: private.h
-// Purpose: Private declarations for wxMotif port
+// Purpose: Private declarations for X11 port
// Author: Julian Smart
// Modified by:
// Created: 17/09/98
#define _WX_PRIVATE_H_
#include "wx/defs.h"
+#include "wx/hashmap.h"
+#include "wx/utils.h"
+#if defined( __cplusplus ) && defined( __VMS )
+#pragma message disable nosimpint
+#endif
+#include "X11/Xlib.h"
+#include "X11/Xatom.h"
+#include "X11/Xutil.h"
+#if defined( __cplusplus ) && defined( __VMS )
+#pragma message enable nosimpint
+#endif
+
+// Include common declarations
+#include "wx/x11/privx.h"
-class wxMouseEvent;
-class wxKeyEvent;
+#if wxUSE_UNICODE
+#include "pango/pango.h"
+#endif
-// Put any private declarations here: native Motif types may be used because
-// this header is included after Xm/Xm.h
+class WXDLLIMPEXP_CORE wxMouseEvent;
+class WXDLLIMPEXP_CORE wxKeyEvent;
+class WXDLLIMPEXP_CORE wxWindow;
// ----------------------------------------------------------------------------
-// common callbacks
+// Some Unicode <-> UTF8 macros stolen from GTK
// ----------------------------------------------------------------------------
-// All widgets should have this as their resize proc.
-extern void wxWidgetResizeProc(Widget w, XConfigureEvent *event, String args[], int *num_args);
-
-// For repainting arbitrary windows
-void wxUniversalRepaintProc(Widget w, XtPointer WXUNUSED(c_data), XEvent *event, char *);
+#if wxUSE_UNICODE
+ #define wxGTK_CONV(s) wxConvUTF8.cWX2MB(s)
+ #define wxGTK_CONV_BACK(s) wxConvUTF8.cMB2WX(s)
+#else
+ #define wxGTK_CONV(s) s.c_str()
+ #define wxGTK_CONV_BACK(s) s
+#endif
// ----------------------------------------------------------------------------
// we maintain a hash table which contains the mapping from Widget to wxWindow
// corresponding to the window for this widget
// ----------------------------------------------------------------------------
-extern void wxDeleteWindowFromTable(Widget w);
-extern wxWindow *wxGetWindowFromTable(Widget w);
-extern bool wxAddWindowToTable(Widget w, wxWindow *win);
-
-// ----------------------------------------------------------------------------
-// key events related functions
-// ----------------------------------------------------------------------------
-
-extern char wxFindMnemonic(const char* s);
-
-extern char * wxFindAccelerator (const char *s);
-extern XmString wxFindAcceleratorText (const char *s);
-
-extern int wxCharCodeXToWX(KeySym keySym);
-extern KeySym wxCharCodeWXToX(int id);
-
-// ----------------------------------------------------------------------------
-// TranslateXXXEvent() functions - translate Motif event to wxWindow one
-// ----------------------------------------------------------------------------
-extern bool wxTranslateMouseEvent(wxMouseEvent& wxevent, wxWindow *win, Widget widget, XEvent *xevent);
-extern bool wxTranslateKeyEvent(wxKeyEvent& wxevent, wxWindow *win, Widget widget, XEvent *xevent);
-
-int wxGetBestMatchingPixel(Display *display, XColor *desiredColor, Colormap cmap);
-Pixmap XCreateInsensitivePixmap( Display *display, Pixmap pixmap );
-
-extern XColor g_itemColors[];
-extern int wxComputeColours (Display *display, wxColour * back, wxColour * fore);
-
-extern void wxDoChangeForegroundColour(WXWidget widget, wxColour& foregroundColour);
-extern void wxDoChangeBackgroundColour(WXWidget widget, wxColour& backgroundColour, bool changeArmColour = FALSE);
+WX_DECLARE_HASH_MAP(Window, wxWindow *, wxIntegerHash, wxIntegerEqual, wxWindowHash);
-#define wxNO_COLORS 0x00
-#define wxBACK_COLORS 0x01
-#define wxFORE_COLORS 0x02
+// these hashes are defined in app.cpp
+extern wxWindowHash *wxWidgetHashTable;
+extern wxWindowHash *wxClientWidgetHashTable;
-extern XColor itemColors[5] ;
+extern void wxDeleteWindowFromTable(Window w);
+extern wxWindow *wxGetWindowFromTable(Window w);
+extern bool wxAddWindowToTable(Window w, wxWindow *win);
-#define wxBACK_INDEX 0
-#define wxFORE_INDEX 1
-#define wxSELE_INDEX 2
-#define wxTOPS_INDEX 3
-#define wxBOTS_INDEX 4
+extern void wxDeleteClientWindowFromTable(Window w);
+extern wxWindow *wxGetClientWindowFromTable(Window w);
+extern bool wxAddClientWindowToTable(Window w, wxWindow *win);
// ----------------------------------------------------------------------------
-// utility classes
+// TranslateXXXEvent() functions - translate X event to wxWindow one
// ----------------------------------------------------------------------------
+extern bool wxTranslateMouseEvent(wxMouseEvent& wxevent, wxWindow *win, Window window, XEvent *xevent);
+extern bool wxTranslateKeyEvent(wxKeyEvent& wxevent, wxWindow *win, Window window, XEvent *xevent, bool isAscii = FALSE);
-// XmString made easy to use in wxWindows (and has an added benefit of
-// cleaning up automatically)
-class wxXmString
-{
-public:
- wxXmString(const wxString& str)
- {
- m_string = XmStringCreateLtoR((char *)str.c_str(),
- XmSTRING_DEFAULT_CHARSET);
- }
-
- ~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;
-};
+extern Window wxGetWindowParent(Window window);
-// ----------------------------------------------------------------------------
-// macros to avoid casting WXFOO to Foo all the time
-// ----------------------------------------------------------------------------
-
-// argument is of type "wxWindow *"
-#define GetWidget(w) ((Widget)(w)->GetHandle())
-
-// ----------------------------------------------------------------------------
-// accessors for C modules
-// ----------------------------------------------------------------------------
+// Set the window manager decorations according to the
+// given wxWidgets style
+bool wxSetWMDecorations(Window w, long style);
+bool wxMWMIsRunning(Window w);
-extern "C" XtAppContext wxGetAppContext();
+// Checks if any of our children are finished.
+// implemented in src/x11/utils.cpp
+void wxCheckForFinishedChildren();
#endif
// _WX_PRIVATE_H_