wxUSE_CONSTRAINTS now refers to constraints only, since sizers
are now crucial to wxWindows. Further Nano-X fixes; now compiles and links in Nano-X mode. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14358 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
2
configure
vendored
2
configure
vendored
@@ -12248,7 +12248,7 @@ rm -f conftest*
|
|||||||
if test "$wxUSE_NANOX" = "yes"; then
|
if test "$wxUSE_NANOX" = "yes"; then
|
||||||
TOOLKIT_INCLUDE="-I\$(top_srcdir)/include/wx/x11/nanox -I\$(MICROWIN)/src/include $TOOLKIT_INCLUDE"
|
TOOLKIT_INCLUDE="-I\$(top_srcdir)/include/wx/x11/nanox -I\$(MICROWIN)/src/include $TOOLKIT_INCLUDE"
|
||||||
TOOLCHAIN_DEFS="${TOOLCHAIN_DEFS} -D__NANOX__ -DMWPIXEL_FORMAT=MWPF_TRUECOLOR0888 -DHAVE_FILEIO -DHAVE_BMP_SUPPORT=1 -DHAVE_GIF_SUPPORT=1 -DHAVE_PNM_SUPPORT=1 -DHAVE_XPM_SUPPORT=1 -DLINUX=1 -DUNIX=1 -O -DUSE_EXPOSURE -DSCREEN_HEIGHT=480 -DSCREEN_WIDTH=640 -DSCREEN_DEPTH=4 -DX11=1"
|
TOOLCHAIN_DEFS="${TOOLCHAIN_DEFS} -D__NANOX__ -DMWPIXEL_FORMAT=MWPF_TRUECOLOR0888 -DHAVE_FILEIO -DHAVE_BMP_SUPPORT=1 -DHAVE_GIF_SUPPORT=1 -DHAVE_PNM_SUPPORT=1 -DHAVE_XPM_SUPPORT=1 -DLINUX=1 -DUNIX=1 -O -DUSE_EXPOSURE -DSCREEN_HEIGHT=480 -DSCREEN_WIDTH=640 -DSCREEN_DEPTH=4 -DX11=1"
|
||||||
GUI_TK_LIBRARY="$GUI_TK_LIBRARY \$MICROWIN/src/lib/libnano-X.a \$MICROWIN/src/lib/libmwengine.a \$MICROWIN/src/lib/libmwfonts.a \$MICROWIN/src/lib/libmwdrivers.a"
|
GUI_TK_LIBRARY="$GUI_TK_LIBRARY \$(MICROWIN)/src/lib/libnano-X.a"
|
||||||
else
|
else
|
||||||
GUI_TK_LIBRARY="$GUI_TK_LIBRARY -lX11$xpm_link"
|
GUI_TK_LIBRARY="$GUI_TK_LIBRARY -lX11$xpm_link"
|
||||||
fi
|
fi
|
||||||
|
@@ -1905,7 +1905,7 @@ equivalent variable and GTK+ is version 1.2.3 or above.
|
|||||||
if test "$wxUSE_NANOX" = "yes"; then
|
if test "$wxUSE_NANOX" = "yes"; then
|
||||||
TOOLKIT_INCLUDE="-I\$(top_srcdir)/include/wx/x11/nanox -I\$(MICROWIN)/src/include $TOOLKIT_INCLUDE"
|
TOOLKIT_INCLUDE="-I\$(top_srcdir)/include/wx/x11/nanox -I\$(MICROWIN)/src/include $TOOLKIT_INCLUDE"
|
||||||
TOOLCHAIN_DEFS="${TOOLCHAIN_DEFS} -D__NANOX__ -DMWPIXEL_FORMAT=MWPF_TRUECOLOR0888 -DHAVE_FILEIO -DHAVE_BMP_SUPPORT=1 -DHAVE_GIF_SUPPORT=1 -DHAVE_PNM_SUPPORT=1 -DHAVE_XPM_SUPPORT=1 -DLINUX=1 -DUNIX=1 -O -DUSE_EXPOSURE -DSCREEN_HEIGHT=480 -DSCREEN_WIDTH=640 -DSCREEN_DEPTH=4 -DX11=1"
|
TOOLCHAIN_DEFS="${TOOLCHAIN_DEFS} -D__NANOX__ -DMWPIXEL_FORMAT=MWPF_TRUECOLOR0888 -DHAVE_FILEIO -DHAVE_BMP_SUPPORT=1 -DHAVE_GIF_SUPPORT=1 -DHAVE_PNM_SUPPORT=1 -DHAVE_XPM_SUPPORT=1 -DLINUX=1 -DUNIX=1 -O -DUSE_EXPOSURE -DSCREEN_HEIGHT=480 -DSCREEN_WIDTH=640 -DSCREEN_DEPTH=4 -DX11=1"
|
||||||
GUI_TK_LIBRARY="$GUI_TK_LIBRARY \$MICROWIN/src/lib/libnano-X.a \$MICROWIN/src/lib/libmwengine.a \$MICROWIN/src/lib/libmwfonts.a \$MICROWIN/src/lib/libmwdrivers.a"
|
GUI_TK_LIBRARY="$GUI_TK_LIBRARY \$(MICROWIN)/src/lib/libnano-X.a"
|
||||||
else
|
else
|
||||||
GUI_TK_LIBRARY="$GUI_TK_LIBRARY -lX11$xpm_link"
|
GUI_TK_LIBRARY="$GUI_TK_LIBRARY -lX11$xpm_link"
|
||||||
fi
|
fi
|
||||||
|
@@ -8,15 +8,21 @@ Widgets are supplied by the wxUniversal project, while the
|
|||||||
underlying port uses the Windows ports with small modifications
|
underlying port uses the Windows ports with small modifications
|
||||||
for the MicroWindows API.
|
for the MicroWindows API.
|
||||||
|
|
||||||
|
=== NOTE: ===
|
||||||
|
|
||||||
|
Current efforts are being concentrated on a port to Nano-X,
|
||||||
|
which potentially offers greater flexibility than the WIN32
|
||||||
|
API of MicroWindows, such as the ability to run multiple
|
||||||
|
Nano-X processes simultaneously. Please see
|
||||||
|
../docs/x11/readme-nanox.txt for information.
|
||||||
|
|
||||||
There are many things missing from MicroWindows that will
|
There are many things missing from MicroWindows that will
|
||||||
make the port quite limited for the time being. I haven't
|
make the port quite limited for the time being.
|
||||||
worked out how to create bitmaps, though there is a BMP to C
|
In particular, only one WIN32 app may be run at a time.
|
||||||
converter. There are no common dialogs (we will use generic ones),
|
|
||||||
and only one WIN32 app may be run at a time.
|
|
||||||
|
|
||||||
Note that you can gain confidence in the WIN32/wxUniversal
|
Note that you can gain confidence in the WIN32/wxUniversal
|
||||||
combination by compiling wxUniversal under Windows using VC++,
|
combination by compiling wxUniversal under Windows using VC++,
|
||||||
using src/wxvc_universal.dsp. You can compile the minimal
|
using src/wxUniv.dsp. You can compile the minimal
|
||||||
and widgets samples in wxUniversal mode using the
|
and widgets samples in wxUniversal mode using the
|
||||||
UnivDebug and UnivRelease targets. Most of the code is shared
|
UnivDebug and UnivRelease targets. Most of the code is shared
|
||||||
between this combination, and the wxMicroWindows port.
|
between this combination, and the wxMicroWindows port.
|
||||||
|
@@ -702,15 +702,6 @@ public:
|
|||||||
void SetConstraints( wxLayoutConstraints *constraints );
|
void SetConstraints( wxLayoutConstraints *constraints );
|
||||||
wxLayoutConstraints *GetConstraints() const { return m_constraints; }
|
wxLayoutConstraints *GetConstraints() const { return m_constraints; }
|
||||||
|
|
||||||
// when using constraints, it makes sense to update children positions
|
|
||||||
// automatically whenever the window is resized - this is done if
|
|
||||||
// autoLayout is on
|
|
||||||
void SetAutoLayout( bool autoLayout ) { m_autoLayout = autoLayout; }
|
|
||||||
bool GetAutoLayout() const { return m_autoLayout; }
|
|
||||||
|
|
||||||
// do layout the window and its children
|
|
||||||
virtual bool Layout();
|
|
||||||
|
|
||||||
// implementation only
|
// implementation only
|
||||||
void UnsetConstraints(wxLayoutConstraints *c);
|
void UnsetConstraints(wxLayoutConstraints *c);
|
||||||
wxWindowList *GetConstraintsInvolvedIn() const
|
wxWindowList *GetConstraintsInvolvedIn() const
|
||||||
@@ -733,6 +724,17 @@ public:
|
|||||||
virtual void GetClientSizeConstraint(int *w, int *h) const ;
|
virtual void GetClientSizeConstraint(int *w, int *h) const ;
|
||||||
virtual void GetPositionConstraint(int *x, int *y) const ;
|
virtual void GetPositionConstraint(int *x, int *y) const ;
|
||||||
|
|
||||||
|
#endif // wxUSE_CONSTRAINTS
|
||||||
|
|
||||||
|
// when using constraints or sizers, it makes sense to update
|
||||||
|
// children positions automatically whenever the window is resized
|
||||||
|
// - this is done if autoLayout is on
|
||||||
|
void SetAutoLayout( bool autoLayout ) { m_autoLayout = autoLayout; }
|
||||||
|
bool GetAutoLayout() const { return m_autoLayout; }
|
||||||
|
|
||||||
|
// lay out the window and its children
|
||||||
|
virtual bool Layout();
|
||||||
|
|
||||||
// sizers
|
// sizers
|
||||||
void SetSizer( wxSizer *sizer );
|
void SetSizer( wxSizer *sizer );
|
||||||
wxSizer *GetSizer() const { return m_windowSizer; }
|
wxSizer *GetSizer() const { return m_windowSizer; }
|
||||||
@@ -741,8 +743,6 @@ public:
|
|||||||
void SetContainingSizer(wxSizer* sizer) { m_containingSizer = sizer; }
|
void SetContainingSizer(wxSizer* sizer) { m_containingSizer = sizer; }
|
||||||
wxSizer *GetContainingSizer() const { return m_containingSizer; }
|
wxSizer *GetContainingSizer() const { return m_containingSizer; }
|
||||||
|
|
||||||
#endif // wxUSE_CONSTRAINTS
|
|
||||||
|
|
||||||
// backward compatibility
|
// backward compatibility
|
||||||
// ----------------------
|
// ----------------------
|
||||||
#if WXWIN_COMPATIBILITY
|
#if WXWIN_COMPATIBILITY
|
||||||
@@ -843,6 +843,7 @@ protected:
|
|||||||
|
|
||||||
// constraints this window is involved in
|
// constraints this window is involved in
|
||||||
wxWindowList *m_constraintsInvolvedIn;
|
wxWindowList *m_constraintsInvolvedIn;
|
||||||
|
#endif // wxUSE_CONSTRAINTS
|
||||||
|
|
||||||
// this window's sizer
|
// this window's sizer
|
||||||
wxSizer *m_windowSizer;
|
wxSizer *m_windowSizer;
|
||||||
@@ -852,7 +853,6 @@ protected:
|
|||||||
|
|
||||||
// Layout() window automatically when its size changes?
|
// Layout() window automatically when its size changes?
|
||||||
bool m_autoLayout:1;
|
bool m_autoLayout:1;
|
||||||
#endif // wxUSE_CONSTRAINTS
|
|
||||||
|
|
||||||
// window state
|
// window state
|
||||||
bool m_isShown:1;
|
bool m_isShown:1;
|
||||||
|
@@ -5,6 +5,10 @@
|
|||||||
#ifndef _DUMMY_XLIBH_
|
#ifndef _DUMMY_XLIBH_
|
||||||
#define _DUMMY_XLIBH_
|
#define _DUMMY_XLIBH_
|
||||||
|
|
||||||
|
#ifdef __GNUG__
|
||||||
|
#pragma interface "Xlib.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Move away the typedef in XtoNX.h */
|
/* Move away the typedef in XtoNX.h */
|
||||||
#define XFontStruct XFontStruct1
|
#define XFontStruct XFontStruct1
|
||||||
#include <XtoNX.h>
|
#include <XtoNX.h>
|
||||||
@@ -19,7 +23,8 @@ typedef int Status;
|
|||||||
typedef unsigned long VisualID;
|
typedef unsigned long VisualID;
|
||||||
typedef int Bool;
|
typedef int Bool;
|
||||||
typedef long XID;
|
typedef long XID;
|
||||||
typedef XID KeySym;
|
typedef GR_SCANCODE KeySym;
|
||||||
|
typedef GR_EVENT_KEYSTROKE XKeyEvent;
|
||||||
typedef struct {
|
typedef struct {
|
||||||
GR_FONT_INFO info;
|
GR_FONT_INFO info;
|
||||||
GR_FONT_ID fid;
|
GR_FONT_ID fid;
|
||||||
@@ -33,6 +38,24 @@ typedef struct {
|
|||||||
unsigned short attributes; /* per char flags (not predefined) */
|
unsigned short attributes; /* per char flags (not predefined) */
|
||||||
} XCharStruct;
|
} XCharStruct;
|
||||||
|
|
||||||
|
/* Configure window value mask bits */
|
||||||
|
#define CWX (1<<0)
|
||||||
|
#define CWY (1<<1)
|
||||||
|
#define CWWidth (1<<2)
|
||||||
|
#define CWHeight (1<<3)
|
||||||
|
#define CWBorderWidth (1<<4)
|
||||||
|
#define CWSibling (1<<5)
|
||||||
|
#define CWStackMode (1<<6)
|
||||||
|
|
||||||
|
/* Values */
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
int x, y;
|
||||||
|
int width, height;
|
||||||
|
int border_width;
|
||||||
|
Window sibling;
|
||||||
|
int stack_mode;
|
||||||
|
} XWindowChanges;
|
||||||
|
|
||||||
/* typedef unsigned long Time; */
|
/* typedef unsigned long Time; */
|
||||||
|
|
||||||
@@ -64,6 +87,10 @@ typedef struct {
|
|||||||
#define DoRed 0
|
#define DoRed 0
|
||||||
#define DoGreen 0
|
#define DoGreen 0
|
||||||
#define DoBlue 0
|
#define DoBlue 0
|
||||||
|
#define NoEventMask GR_EVENT_MASK_NONE
|
||||||
|
#define RevertToParent 0
|
||||||
|
#define CurrentTime 0
|
||||||
|
#define GrabModeAsync 0
|
||||||
|
|
||||||
#define GXcopy GR_MODE_COPY
|
#define GXcopy GR_MODE_COPY
|
||||||
#define GXclear GR_MODE_CLEAR
|
#define GXclear GR_MODE_CLEAR
|
||||||
@@ -88,12 +115,14 @@ inline void wxNoop() { /* Do nothing */ }
|
|||||||
|
|
||||||
#define XSynchronize(display,sync)
|
#define XSynchronize(display,sync)
|
||||||
#define XDefaultRootWindow(d) GR_ROOT_WINDOW_ID
|
#define XDefaultRootWindow(d) GR_ROOT_WINDOW_ID
|
||||||
|
#define RootWindowOfScreen(s) GR_ROOT_WINDOW_ID
|
||||||
#define XFreePixmap(d, p) GrDestroyWindow(p)
|
#define XFreePixmap(d, p) GrDestroyWindow(p)
|
||||||
#define XFreeCursor(d, c) GrDestroyCursor(c)
|
#define XFreeCursor(d, c) GrDestroyCursor(c)
|
||||||
#define XFreeGC(d, gc) GrDestroyGC(gc)
|
#define XFreeGC(d, gc) GrDestroyGC(gc)
|
||||||
#define XSetBackground(d, gc, c) GrSetGCBackground(gc, c)
|
#define XSetBackground(d, gc, c) GrSetGCBackground(gc, c)
|
||||||
#define DefaultVisual(d, s) ((Visual*) NULL)
|
#define DefaultVisual(d, s) ((Visual*) NULL)
|
||||||
#define DefaultColormap(d, s) DefaultColormapOfScreen((Screen*) NULL)
|
#define DefaultColormap(d, s) DefaultColormapOfScreen((Screen*) NULL)
|
||||||
|
#define DefaultScreenOfDisplay(d) 0
|
||||||
#define XSetFillStyle(d, gc, s) wxNoop()
|
#define XSetFillStyle(d, gc, s) wxNoop()
|
||||||
#define XSetLineAttributes(d, gc, a, b, c, e) wxNoop()
|
#define XSetLineAttributes(d, gc, a, b, c, e) wxNoop()
|
||||||
#define XSetClipMask(d, gc, m) wxNoop()
|
#define XSetClipMask(d, gc, m) wxNoop()
|
||||||
@@ -118,7 +147,14 @@ inline void wxNoop() { /* Do nothing */ }
|
|||||||
#define XClipBox(r, rect) GrGetRegionBox(r, rect)
|
#define XClipBox(r, rect) GrGetRegionBox(r, rect)
|
||||||
#define XPointInRegion(r, x, y) GrPointInRegion(r, x, y)
|
#define XPointInRegion(r, x, y) GrPointInRegion(r, x, y)
|
||||||
#define XXorRegion(sr1, sr2, r) GrXorRegion(r, sr1, sr2)
|
#define XXorRegion(sr1, sr2, r) GrXorRegion(r, sr1, sr2)
|
||||||
|
/* TODO: Cannot find equivalent for this. */
|
||||||
|
#define XIconifyWindow(d, w, s) 0
|
||||||
|
#define XCreateWindowWithColor(d,p,x,y,w,h,bw,depth,cl,vis,backColor,foreColor) \
|
||||||
|
GrNewWindow(p,x,y,w,h,bw,backColor,foreColor)
|
||||||
|
#define XLookupString(event, buf, len, sym, status) (*sym = (event)->scancode)
|
||||||
|
#define XBell(a, b) GrBell()
|
||||||
|
#define DisplayWidthMM(d, s) 100
|
||||||
|
#define DisplayHeightMM(d, s) 100
|
||||||
|
|
||||||
/* These defines are wrongly defined in XtoNX.h, IMHO,
|
/* These defines are wrongly defined in XtoNX.h, IMHO,
|
||||||
* since they reference a static global.
|
* since they reference a static global.
|
||||||
@@ -258,10 +294,11 @@ typedef int (*XErrorHandler) ( /* WARNING, this type not in Xlib spec */
|
|||||||
|
|
||||||
/* Fuunctions */
|
/* Fuunctions */
|
||||||
|
|
||||||
#ifdef __cpluplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Display *XOpenDisplay(char *name);
|
||||||
Colormap DefaultColormapOfScreen(Screen* /* screen */) ;
|
Colormap DefaultColormapOfScreen(Screen* /* screen */) ;
|
||||||
int XSetGraphicsExposures( Display* /* display */, GC /* gc */, Bool /* graphics_exposures */) ;
|
int XSetGraphicsExposures( Display* /* display */, GC /* gc */, Bool /* graphics_exposures */) ;
|
||||||
int XWarpPointer( Display* /* display */, Window /* srcW */, Window /* destW */,
|
int XWarpPointer( Display* /* display */, Window /* srcW */, Window /* destW */,
|
||||||
@@ -275,7 +312,7 @@ int XGrabPointer(Display* /* display */, Window /* grab_window */,
|
|||||||
Bool /* owner_events */, unsigned int /* event_mask */,
|
Bool /* owner_events */, unsigned int /* event_mask */,
|
||||||
int /* pointer_mode */, int /* keyboard_mode */,
|
int /* pointer_mode */, int /* keyboard_mode */,
|
||||||
Window /* confine_to */, Cursor /* cursor */, Time /* time */) ;
|
Window /* confine_to */, Cursor /* cursor */, Time /* time */) ;
|
||||||
int XUngrabPointer(Display /* display */, Time /* time */) ;
|
int XUngrabPointer(Display* /* display */, Time /* time */) ;
|
||||||
int XCopyArea(Display* /* display */, Drawable src, Drawable dest, GC gc,
|
int XCopyArea(Display* /* display */, Drawable src, Drawable dest, GC gc,
|
||||||
int src_x, int src_y, unsigned int width, unsigned int height,
|
int src_x, int src_y, unsigned int width, unsigned int height,
|
||||||
int dest_x, int dest_y) ;
|
int dest_x, int dest_y) ;
|
||||||
@@ -284,7 +321,6 @@ int XCopyPlane(Display* /* display */, Drawable src, Drawable dest, GC gc,
|
|||||||
int dest_x, int dest_y, unsigned long /* plane */) ;
|
int dest_x, int dest_y, unsigned long /* plane */) ;
|
||||||
|
|
||||||
XErrorHandler XSetErrorHandler (XErrorHandler /* handler */);
|
XErrorHandler XSetErrorHandler (XErrorHandler /* handler */);
|
||||||
Display *XOpenDisplay(char *name);
|
|
||||||
Screen *XScreenOfDisplay(Display* /* display */,
|
Screen *XScreenOfDisplay(Display* /* display */,
|
||||||
int /* screen_number */);
|
int /* screen_number */);
|
||||||
int DisplayWidth(Display* /* display */, int /* screen */);
|
int DisplayWidth(Display* /* display */, int /* screen */);
|
||||||
@@ -302,8 +338,13 @@ int XPending(Display *d);
|
|||||||
XFontStruct* XLoadQueryFont(Display* display, const char* fontSpec);
|
XFontStruct* XLoadQueryFont(Display* display, const char* fontSpec);
|
||||||
int XFreeFont(Display* display, XFontStruct* fontStruct);
|
int XFreeFont(Display* display, XFontStruct* fontStruct);
|
||||||
int XQueryColor(Display* display, Colormap cmap, XColor* color);
|
int XQueryColor(Display* display, Colormap cmap, XColor* color);
|
||||||
|
Status XGetWindowAttributes(Display* display, Window w,
|
||||||
|
XWindowAttributes* window_attributes);
|
||||||
|
|
||||||
#ifdef __cpluplus
|
int XConfigureWindow(Display* display, Window w, int mask, XWindowChanges* changes);
|
||||||
|
int XTranslateCoordinates(Display* display, Window srcWindow, Window destWindow, int srcX, int srcY, int* destX, int* destY, Window* childReturn);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@@ -67,21 +67,65 @@ bool wxWindowIsVisible(Window win);
|
|||||||
|
|
||||||
#if wxUSE_NANOX
|
#if wxUSE_NANOX
|
||||||
#define XEventGetWindow(event) event->general.wid
|
#define XEventGetWindow(event) event->general.wid
|
||||||
|
#define XEventGetType(event) event->general.type
|
||||||
#define XConfigureEventGetWidth(event) ((int) event->update.width)
|
#define XConfigureEventGetWidth(event) ((int) event->update.width)
|
||||||
#define XConfigureEventGetHeight(event) ((int) event->update.height)
|
#define XConfigureEventGetHeight(event) ((int) event->update.height)
|
||||||
#define XExposeEventGetX(event) event->exposure.x
|
#define XExposeEventGetX(event) event->exposure.x
|
||||||
#define XExposeEventGetY(event) event->exposure.y
|
#define XExposeEventGetY(event) event->exposure.y
|
||||||
#define XExposeEventGetWidth(event) event->exposure.width
|
#define XExposeEventGetWidth(event) event->exposure.width
|
||||||
#define XExposeEventGetHeight(event) event->exposure.height
|
#define XExposeEventGetHeight(event) event->exposure.height
|
||||||
|
#define XButtonEventGetTime(event) (wxGetLocalTime())
|
||||||
|
#define XButtonEventLChanged(event) (event->button.changebuttons & GR_BUTTON_L)
|
||||||
|
#define XButtonEventMChanged(event) (event->button.changebuttons & GR_BUTTON_M)
|
||||||
|
#define XButtonEventRChanged(event) (event->button.changebuttons & GR_BUTTON_R)
|
||||||
|
#define XButtonEventLIsDown(x) ((x)->button.buttons & GR_BUTTON_L)
|
||||||
|
#define XButtonEventMIsDown(x) ((x)->button.buttons & GR_BUTTON_M)
|
||||||
|
#define XButtonEventRIsDown(x) ((x)->button.buttons & GR_BUTTON_R)
|
||||||
|
#define XButtonEventShiftIsDown(x) (x->button.modifiers & MWKMOD_SHIFT)
|
||||||
|
#define XButtonEventCtrlIsDown(x) (x->button.modifiers & MWKMOD_CTRL)
|
||||||
|
#define XButtonEventAltIsDown(x) (x->button.modifiers & MWKMOD_ALT)
|
||||||
|
#define XButtonEventMetaIsDown(x) (x->button.modifiers & MWKMOD_META)
|
||||||
|
#define XButtonEventGetX(event) (event->button.x)
|
||||||
|
#define XButtonEventGetY(event) (event->button.y)
|
||||||
|
#define XKeyEventGetTime(event) (wxGetLocalTime())
|
||||||
|
#define XKeyEventGetX(event) (event->keystroke.x)
|
||||||
|
#define XKeyEventGetY(event) (event->keystroke.y)
|
||||||
|
#define XKeyEventShiftIsDown(x) (x->keystroke.modifiers & MWKMOD_SHIFT)
|
||||||
|
#define XKeyEventCtrlIsDown(x) (x->keystroke.modifiers & MWKMOD_CTRL)
|
||||||
|
#define XKeyEventAltIsDown(x) (x->keystroke.modifiers & MWKMOD_ALT)
|
||||||
|
#define XKeyEventMetaIsDown(x) (x->keystroke.modifiers & MWKMOD_META)
|
||||||
#define XFontStructGetAscent(f) f->info.baseline
|
#define XFontStructGetAscent(f) f->info.baseline
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
#define XEventGetWindow(event) event->xany.window
|
#define XEventGetWindow(event) event->xany.window
|
||||||
|
#define XEventGetType(event) event->xany.type
|
||||||
#define XConfigureEventGetWidth(event) event->xconfigure.width
|
#define XConfigureEventGetWidth(event) event->xconfigure.width
|
||||||
#define XConfigureEventGetHeight(event) event->xconfigure.height
|
#define XConfigureEventGetHeight(event) event->xconfigure.height
|
||||||
#define XExposeEventGetX(event) event->xexpose.x
|
#define XExposeEventGetX(event) event->xexpose.x
|
||||||
#define XExposeEventGetY(event) event->xexpose.y
|
#define XExposeEventGetY(event) event->xexpose.y
|
||||||
#define XExposeEventGetWidth(event) event->xexpose.width
|
#define XExposeEventGetWidth(event) event->xexpose.width
|
||||||
#define XExposeEventGetHeight(event) event->xexpose.height
|
#define XExposeEventGetHeight(event) event->xexpose.height
|
||||||
|
#define XButtonEventGetTime(event) (event->xbutton.time)
|
||||||
|
#define XButtonEventLChanged(event) (event->xbutton.button == Button1)
|
||||||
|
#define XButtonEventMChanged(event) (event->xbutton.button == Button2)
|
||||||
|
#define XButtonEventRChanged(event) (event->xbutton.button == Button3)
|
||||||
|
#define XButtonEventLIsDown(x) ((x)->xbutton.state & Button1Mask)
|
||||||
|
#define XButtonEventMIsDown(x) ((x)->xbutton.state & Button2Mask)
|
||||||
|
#define XButtonEventRIsDown(x) ((x)->xbutton.state & Button3Mask)
|
||||||
|
#define XButtonEventShiftIsDown(x) (x->xbutton.state & ShiftMask)
|
||||||
|
#define XButtonEventCtrlIsDown(x) (x->xbutton.state & ControlMask)
|
||||||
|
#define XButtonEventAltIsDown(x) (x->xbutton.state & Mod3Mask)
|
||||||
|
#define XButtonEventMetaIsDown(x) (x->xbutton.state & Mod1Mask)
|
||||||
|
#define XButtonEventGetX(event) (event->xbutton.x)
|
||||||
|
#define XButtonEventGetY(event) (event->xbutton.y)
|
||||||
|
#define XKeyEventGetTime(event) (event->xkey.time)
|
||||||
|
#define XKeyEventShiftIsDown(x) (x->xkey.state & ShiftMask)
|
||||||
|
#define XKeyEventCtrlIsDown(x) (x->xkey.state & ControlMask)
|
||||||
|
#define XKeyEventAltIsDown(x) (x->xkey.state & Mod3Mask)
|
||||||
|
#define XKeyEventMetaIsDown(x) (x->xkey.state & Mod1Mask)
|
||||||
|
#define XKeyEventGetX(event) (event->xkey.x)
|
||||||
|
#define XKeyEventGetY(event) (event->xkey.y)
|
||||||
#define XFontStructGetAscent(f) f->ascent
|
#define XFontStructGetAscent(f) f->ascent
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@@ -483,8 +483,6 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h )
|
|||||||
: wxPanel( frame, -1, wxPoint(x, y), wxSize(w, h) ),
|
: wxPanel( frame, -1, wxPoint(x, y), wxSize(w, h) ),
|
||||||
m_text(NULL), m_notebook(NULL)
|
m_text(NULL), m_notebook(NULL)
|
||||||
{
|
{
|
||||||
wxLayoutConstraints *c;
|
|
||||||
|
|
||||||
m_text = new wxTextCtrl(this, -1, "This is the log window.\n",
|
m_text = new wxTextCtrl(this, -1, "This is the log window.\n",
|
||||||
wxPoint(0, 250), wxSize(100, 50), wxTE_MULTILINE);
|
wxPoint(0, 250), wxSize(100, 50), wxTE_MULTILINE);
|
||||||
m_text->SetBackgroundColour(wxT("wheat"));
|
m_text->SetBackgroundColour(wxT("wheat"));
|
||||||
@@ -779,6 +777,8 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h )
|
|||||||
m_notebook->AddPage(panel, "wxBitmapXXX");
|
m_notebook->AddPage(panel, "wxBitmapXXX");
|
||||||
|
|
||||||
// layout constraints
|
// layout constraints
|
||||||
|
#if wxUSE_CONSTRAINTS
|
||||||
|
wxLayoutConstraints *c;
|
||||||
|
|
||||||
panel = new wxPanel(m_notebook);
|
panel = new wxPanel(m_notebook);
|
||||||
panel->SetAutoLayout( TRUE );
|
panel->SetAutoLayout( TRUE );
|
||||||
@@ -802,7 +802,8 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h )
|
|||||||
pMyButton2->SetConstraints( c );
|
pMyButton2->SetConstraints( c );
|
||||||
|
|
||||||
m_notebook->AddPage(panel, "wxLayoutConstraint");
|
m_notebook->AddPage(panel, "wxLayoutConstraint");
|
||||||
|
#endif
|
||||||
|
|
||||||
// sizer
|
// sizer
|
||||||
|
|
||||||
panel = new wxPanel(m_notebook);
|
panel = new wxPanel(m_notebook);
|
||||||
|
@@ -47,9 +47,10 @@
|
|||||||
|
|
||||||
#if wxUSE_CONSTRAINTS
|
#if wxUSE_CONSTRAINTS
|
||||||
#include "wx/layout.h"
|
#include "wx/layout.h"
|
||||||
#include "wx/sizer.h"
|
|
||||||
#endif // wxUSE_CONSTRAINTS
|
#endif // wxUSE_CONSTRAINTS
|
||||||
|
|
||||||
|
#include "wx/sizer.h"
|
||||||
|
|
||||||
#if wxUSE_DRAG_AND_DROP
|
#if wxUSE_DRAG_AND_DROP
|
||||||
#include "wx/dnd.h"
|
#include "wx/dnd.h"
|
||||||
#endif // wxUSE_DRAG_AND_DROP
|
#endif // wxUSE_DRAG_AND_DROP
|
||||||
@@ -151,10 +152,11 @@ void wxWindowBase::InitBase()
|
|||||||
// no constraints whatsoever
|
// no constraints whatsoever
|
||||||
m_constraints = (wxLayoutConstraints *) NULL;
|
m_constraints = (wxLayoutConstraints *) NULL;
|
||||||
m_constraintsInvolvedIn = (wxWindowList *) NULL;
|
m_constraintsInvolvedIn = (wxWindowList *) NULL;
|
||||||
|
#endif // wxUSE_CONSTRAINTS
|
||||||
|
|
||||||
m_windowSizer = (wxSizer *) NULL;
|
m_windowSizer = (wxSizer *) NULL;
|
||||||
m_containingSizer = (wxSizer *) NULL;
|
m_containingSizer = (wxSizer *) NULL;
|
||||||
m_autoLayout = FALSE;
|
m_autoLayout = FALSE;
|
||||||
#endif // wxUSE_CONSTRAINTS
|
|
||||||
|
|
||||||
#if wxUSE_DRAG_AND_DROP
|
#if wxUSE_DRAG_AND_DROP
|
||||||
m_dropTarget = (wxDropTarget *)NULL;
|
m_dropTarget = (wxDropTarget *)NULL;
|
||||||
@@ -258,14 +260,14 @@ wxWindowBase::~wxWindowBase()
|
|||||||
m_constraints = NULL;
|
m_constraints = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif // wxUSE_CONSTRAINTS
|
||||||
|
|
||||||
if ( m_containingSizer )
|
if ( m_containingSizer )
|
||||||
m_containingSizer->Remove((wxWindow*)this);
|
m_containingSizer->Remove((wxWindow*)this);
|
||||||
|
|
||||||
if ( m_windowSizer )
|
if ( m_windowSizer )
|
||||||
delete m_windowSizer;
|
delete m_windowSizer;
|
||||||
|
|
||||||
#endif // wxUSE_CONSTRAINTS
|
|
||||||
|
|
||||||
#if wxUSE_DRAG_AND_DROP
|
#if wxUSE_DRAG_AND_DROP
|
||||||
if ( m_dropTarget )
|
if ( m_dropTarget )
|
||||||
delete m_dropTarget;
|
delete m_dropTarget;
|
||||||
@@ -1181,6 +1183,7 @@ void wxWindowBase::DeleteRelatedConstraints()
|
|||||||
m_constraintsInvolvedIn = (wxWindowList *) NULL;
|
m_constraintsInvolvedIn = (wxWindowList *) NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void wxWindowBase::SetSizer(wxSizer *sizer)
|
void wxWindowBase::SetSizer(wxSizer *sizer)
|
||||||
{
|
{
|
||||||
@@ -1199,6 +1202,7 @@ bool wxWindowBase::Layout()
|
|||||||
|
|
||||||
GetSizer()->SetDimension( 0, 0, w, h );
|
GetSizer()->SetDimension( 0, 0, w, h );
|
||||||
}
|
}
|
||||||
|
#if wxUSE_CONSTRAINTS
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
wxLayoutConstraints *constr = GetConstraints();
|
wxLayoutConstraints *constr = GetConstraints();
|
||||||
@@ -1222,11 +1226,12 @@ bool wxWindowBase::Layout()
|
|||||||
DoPhase(2); // Layout grand children
|
DoPhase(2); // Layout grand children
|
||||||
SetConstraintSizes(); // Recursively set the real window sizes
|
SetConstraintSizes(); // Recursively set the real window sizes
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if wxUSE_CONSTRAINTS
|
||||||
// Do a phase of evaluating constraints: the default behaviour. wxSizers may
|
// Do a phase of evaluating constraints: the default behaviour. wxSizers may
|
||||||
// do a similar thing, but also impose their own 'constraints' and order the
|
// do a similar thing, but also impose their own 'constraints' and order the
|
||||||
// evaluation differently.
|
// evaluation differently.
|
||||||
@@ -1432,6 +1437,20 @@ void wxWindowBase::GetClientSizeConstraint(int *w, int *h) const
|
|||||||
GetClientSize(w, h);
|
GetClientSize(w, h);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void wxWindowBase::GetPositionConstraint(int *x, int *y) const
|
||||||
|
{
|
||||||
|
wxLayoutConstraints *constr = GetConstraints();
|
||||||
|
if ( constr )
|
||||||
|
{
|
||||||
|
*x = constr->left.GetValue();
|
||||||
|
*y = constr->top.GetValue();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
GetPosition(x, y);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // wxUSE_CONSTRAINTS
|
||||||
|
|
||||||
void wxWindowBase::AdjustForParentClientOrigin(int& x, int& y, int sizeFlags)
|
void wxWindowBase::AdjustForParentClientOrigin(int& x, int& y, int sizeFlags)
|
||||||
{
|
{
|
||||||
// don't do it for the dialogs/frames - they float independently of their
|
// don't do it for the dialogs/frames - they float independently of their
|
||||||
@@ -1448,21 +1467,6 @@ void wxWindowBase::AdjustForParentClientOrigin(int& x, int& y, int sizeFlags)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void wxWindowBase::GetPositionConstraint(int *x, int *y) const
|
|
||||||
{
|
|
||||||
wxLayoutConstraints *constr = GetConstraints();
|
|
||||||
if ( constr )
|
|
||||||
{
|
|
||||||
*x = constr->left.GetValue();
|
|
||||||
*y = constr->top.GetValue();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
GetPosition(x, y);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif // wxUSE_CONSTRAINTS
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// do Update UI processing for child controls
|
// do Update UI processing for child controls
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
@@ -20,6 +20,8 @@
|
|||||||
#pragma hdrstop
|
#pragma hdrstop
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if wxUSE_PROLOGIO
|
||||||
|
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
@@ -1272,3 +1274,5 @@ WXDLLEXPORT char *strdup(const char *s)
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
// wxUSE_PROLOGIO
|
||||||
|
@@ -67,6 +67,7 @@ static bool ProcessFamiliesFromFontList(wxFontEnumerator *This,
|
|||||||
// helpers
|
// helpers
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#if !wxUSE_NANOX
|
||||||
static char **CreateFontList(wxChar spacing,
|
static char **CreateFontList(wxChar spacing,
|
||||||
wxFontEncoding encoding,
|
wxFontEncoding encoding,
|
||||||
int *nFonts)
|
int *nFonts)
|
||||||
@@ -136,6 +137,8 @@ static bool ProcessFamiliesFromFontList(wxFontEnumerator *This,
|
|||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
// wxUSE_NANOX
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// wxFontEnumerator
|
// wxFontEnumerator
|
||||||
@@ -144,6 +147,9 @@ static bool ProcessFamiliesFromFontList(wxFontEnumerator *This,
|
|||||||
bool wxFontEnumerator::EnumerateFacenames(wxFontEncoding encoding,
|
bool wxFontEnumerator::EnumerateFacenames(wxFontEncoding encoding,
|
||||||
bool fixedWidthOnly)
|
bool fixedWidthOnly)
|
||||||
{
|
{
|
||||||
|
#if wxUSE_NANOX
|
||||||
|
return FALSE;
|
||||||
|
#else
|
||||||
int nFonts;
|
int nFonts;
|
||||||
char **fonts;
|
char **fonts;
|
||||||
|
|
||||||
@@ -187,12 +193,16 @@ bool wxFontEnumerator::EnumerateFacenames(wxFontEncoding encoding,
|
|||||||
(void)ProcessFamiliesFromFontList(this, fonts, nFonts);
|
(void)ProcessFamiliesFromFontList(this, fonts, nFonts);
|
||||||
|
|
||||||
XFreeFontNames(fonts);
|
XFreeFontNames(fonts);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
#endif
|
||||||
|
// wxUSE_NANOX
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxFontEnumerator::EnumerateEncodings(const wxString& family)
|
bool wxFontEnumerator::EnumerateEncodings(const wxString& family)
|
||||||
{
|
{
|
||||||
|
#if wxUSE_NANOX
|
||||||
|
return FALSE;
|
||||||
|
#else
|
||||||
wxString pattern;
|
wxString pattern;
|
||||||
pattern.Printf(wxT("-*-%s-*-*-*-*-*-*-*-*-*-*-*-*"),
|
pattern.Printf(wxT("-*-%s-*-*-*-*-*-*-*-*-*-*-*-*"),
|
||||||
family.IsEmpty() ? wxT("*") : family.c_str());
|
family.IsEmpty() ? wxT("*") : family.c_str());
|
||||||
@@ -257,4 +267,6 @@ bool wxFontEnumerator::EnumerateEncodings(const wxString& family)
|
|||||||
XFreeFontNames(fonts);
|
XFreeFontNames(fonts);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
#endif
|
||||||
|
// wxUSE_NANOX
|
||||||
}
|
}
|
||||||
|
@@ -237,7 +237,7 @@ int wxEntryStart( int& argc, char *argv[] )
|
|||||||
if (displayName.IsEmpty())
|
if (displayName.IsEmpty())
|
||||||
xdisplay = XOpenDisplay(NULL);
|
xdisplay = XOpenDisplay(NULL);
|
||||||
else
|
else
|
||||||
xdisplay = XOpenDisplay(displayName.c_str());
|
xdisplay = XOpenDisplay((char*) displayName.c_str());
|
||||||
|
|
||||||
if (!xdisplay)
|
if (!xdisplay)
|
||||||
{
|
{
|
||||||
|
117
src/x11/nanox.c
117
src/x11/nanox.c
@@ -8,8 +8,13 @@
|
|||||||
|
|
||||||
#if wxUSE_NANOX
|
#if wxUSE_NANOX
|
||||||
|
|
||||||
|
#ifdef __GNUG__
|
||||||
|
#pragma implementation "Xlib.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <malloc.h>
|
#include <malloc.h>
|
||||||
|
#include <string.h>
|
||||||
#include "wx/defs.h"
|
#include "wx/defs.h"
|
||||||
#include "wx/x11/nanox/X11/Xlib.h"
|
#include "wx/x11/nanox/X11/Xlib.h"
|
||||||
|
|
||||||
@@ -71,7 +76,7 @@ int XGrabPointer(Display* display, Window grab_window,
|
|||||||
return Success;
|
return Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
int XUngrabPointer(Display display, Time time)
|
int XUngrabPointer(Display* display, Time time)
|
||||||
{
|
{
|
||||||
return Success;
|
return Success;
|
||||||
}
|
}
|
||||||
@@ -235,10 +240,60 @@ int XAllocColor(Display* display, Colormap cmap,
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
const char* name;
|
||||||
|
unsigned int red;
|
||||||
|
unsigned int green;
|
||||||
|
unsigned int blue;
|
||||||
|
} _wxColourEntry;
|
||||||
|
|
||||||
|
static _wxColourEntry _wxColourDatabase[] =
|
||||||
|
{
|
||||||
|
{ "WHITE", 255, 255, 255 },
|
||||||
|
{ "BLACK", 0, 0, 0 },
|
||||||
|
{ "RED", 255, 0, 0 },
|
||||||
|
{ "GREEN", 0, 255, 0 },
|
||||||
|
{ "BLUE", 0, 255, 255 },
|
||||||
|
{ "GREY", 128, 128, 128 },
|
||||||
|
{ "GRAY", 128, 128, 128 },
|
||||||
|
{ "LIGHT GREY", 192, 192, 192 },
|
||||||
|
{ "LIGHT GRAY", 192, 192, 192 },
|
||||||
|
{ "DARK GREY", 32, 32, 32 },
|
||||||
|
{ "DARK GRAY", 32, 32, 32 },
|
||||||
|
{ "CYAN", 0, 255, 255 },
|
||||||
|
{ "MAGENTA", 255, 255, 0 },
|
||||||
|
|
||||||
|
/* TODO: the rest */
|
||||||
|
{ NULL, 0, 0, 0 }
|
||||||
|
};
|
||||||
|
|
||||||
int XParseColor(Display* display, Colormap cmap,
|
int XParseColor(Display* display, Colormap cmap,
|
||||||
const char* cname, XColor* color)
|
const char* cname, XColor* color)
|
||||||
{
|
{
|
||||||
/* TODO */
|
int i = 0;
|
||||||
|
for (;;)
|
||||||
|
{
|
||||||
|
if (!_wxColourDatabase[i].name)
|
||||||
|
break;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (strcmp(cname, _wxColourDatabase[i].name) == 0)
|
||||||
|
{
|
||||||
|
color->red = _wxColourDatabase[i].red;
|
||||||
|
color->green = _wxColourDatabase[i].green;
|
||||||
|
color->blue = _wxColourDatabase[i].blue;
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
i ++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Not found: use black */
|
||||||
|
color->red = 0;
|
||||||
|
color->green = 0;
|
||||||
|
color->blue = 0;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -320,5 +375,63 @@ int XQueryColor(Display* display, Colormap cmap, XColor* color)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int XConfigureWindow(Display* display, Window w, int mask, XWindowChanges* changes)
|
||||||
|
{
|
||||||
|
if ((mask & CWX) && (mask & CWY))
|
||||||
|
GrMoveWindow(w, changes->x, changes->y);
|
||||||
|
if ((mask & CWWidth) && (mask & CWHeight))
|
||||||
|
GrResizeWindow(w, changes->width, changes->height);
|
||||||
|
if (mask & CWBorderWidth)
|
||||||
|
{
|
||||||
|
/* TODO */
|
||||||
|
}
|
||||||
|
if (mask & CWSibling)
|
||||||
|
{
|
||||||
|
/* TODO */
|
||||||
|
}
|
||||||
|
if (mask & CWStackMode)
|
||||||
|
{
|
||||||
|
/* TODO */
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int XTranslateCoordinates(Display* display, Window srcWindow, Window destWindow, int srcX, int srcY, int* destX, int* destY, Window* childReturn)
|
||||||
|
{
|
||||||
|
int offx = 0;
|
||||||
|
int offy = 0;
|
||||||
|
|
||||||
|
Window w = srcWindow;
|
||||||
|
while (w != GR_ROOT_WINDOW_ID)
|
||||||
|
{
|
||||||
|
GR_WINDOW_INFO info;
|
||||||
|
GrGetWindowInfo(w, & info);
|
||||||
|
w = info.parent;
|
||||||
|
|
||||||
|
offx += info.x ;
|
||||||
|
offy += info.y ;
|
||||||
|
}
|
||||||
|
|
||||||
|
w = destWindow;
|
||||||
|
|
||||||
|
while (w != GR_ROOT_WINDOW_ID)
|
||||||
|
{
|
||||||
|
GR_WINDOW_INFO info;
|
||||||
|
GrGetWindowInfo(w, & info);
|
||||||
|
w = info.parent;
|
||||||
|
|
||||||
|
offx -= info.x ;
|
||||||
|
offy -= info.y ;
|
||||||
|
}
|
||||||
|
|
||||||
|
*destX = srcX + offx;
|
||||||
|
*destY = srcY + offy;
|
||||||
|
|
||||||
|
if (childReturn)
|
||||||
|
*childReturn = 0;
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
/* wxUSE_NANOX */
|
/* wxUSE_NANOX */
|
||||||
|
@@ -450,6 +450,16 @@ void wxRIRefData::CreateRects( const wxRegion& region )
|
|||||||
Region r = (Region) region.GetX11Region();
|
Region r = (Region) region.GetX11Region();
|
||||||
if (r)
|
if (r)
|
||||||
{
|
{
|
||||||
|
#if wxUSE_NANOX
|
||||||
|
GR_RECT rect;
|
||||||
|
GrGetRegionBox(r, & rect);
|
||||||
|
m_numRects = 1;
|
||||||
|
m_rects = new wxRect[1];
|
||||||
|
m_rects[0].x = rect.x;
|
||||||
|
m_rects[0].y = rect.y;
|
||||||
|
m_rects[0].width = rect.width;
|
||||||
|
m_rects[0].height = rect.height;
|
||||||
|
#else
|
||||||
m_numRects = r->numRects;
|
m_numRects = r->numRects;
|
||||||
if (m_numRects)
|
if (m_numRects)
|
||||||
{
|
{
|
||||||
@@ -464,6 +474,7 @@ void wxRIRefData::CreateRects( const wxRegion& region )
|
|||||||
wr.height = xr.y2-xr.y1;
|
wr.height = xr.y2-xr.y1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -101,13 +101,14 @@ bool wxTopLevelWindowX11::Create(wxWindow *parent,
|
|||||||
m_backgroundColour.CalcPixel( (WXColormap) cm );
|
m_backgroundColour.CalcPixel( (WXColormap) cm );
|
||||||
m_hasBgCol = TRUE;
|
m_hasBgCol = TRUE;
|
||||||
|
|
||||||
|
#if !wxUSE_NANOX
|
||||||
XSetWindowAttributes xattributes;
|
XSetWindowAttributes xattributes;
|
||||||
XSizeHints size_hints;
|
XSizeHints size_hints;
|
||||||
XWMHints wm_hints;
|
|
||||||
|
|
||||||
long xattributes_mask =
|
long xattributes_mask =
|
||||||
CWOverrideRedirect |
|
CWOverrideRedirect |
|
||||||
CWBorderPixel | CWBackPixel;
|
CWBorderPixel | CWBackPixel;
|
||||||
|
|
||||||
xattributes.background_pixel = m_backgroundColour.GetPixel();
|
xattributes.background_pixel = m_backgroundColour.GetPixel();
|
||||||
xattributes.border_pixel = BlackPixel( xdisplay, xscreen );
|
xattributes.border_pixel = BlackPixel( xdisplay, xscreen );
|
||||||
|
|
||||||
@@ -115,6 +116,7 @@ bool wxTopLevelWindowX11::Create(wxWindow *parent,
|
|||||||
// I think we set this to True to remove decorations
|
// I think we set this to True to remove decorations
|
||||||
// No. RR.
|
// No. RR.
|
||||||
xattributes.override_redirect = False;
|
xattributes.override_redirect = False;
|
||||||
|
#endif
|
||||||
|
|
||||||
wxSize size2(size);
|
wxSize size2(size);
|
||||||
if (size2.x == -1)
|
if (size2.x == -1)
|
||||||
@@ -128,15 +130,26 @@ bool wxTopLevelWindowX11::Create(wxWindow *parent,
|
|||||||
if (pos2.y == -1)
|
if (pos2.y == -1)
|
||||||
pos2.y = 100;
|
pos2.y = 100;
|
||||||
|
|
||||||
|
#if wxUSE_NANOX
|
||||||
|
long backColor, foreColor;
|
||||||
|
backColor = GR_RGB(m_backgroundColour.Red(), m_backgroundColour.Green(), m_backgroundColour.Blue());
|
||||||
|
foreColor = GR_RGB(m_foregroundColour.Red(), m_foregroundColour.Green(), m_foregroundColour.Blue());
|
||||||
|
|
||||||
|
Window xwindow = XCreateWindowWithColor( xdisplay, xparent, pos2.x, pos2.y, size2.x, size2.y,
|
||||||
|
0, 0, InputOutput, xvisual, backColor, foreColor);
|
||||||
|
#else
|
||||||
Window xwindow = XCreateWindow( xdisplay, xparent, pos2.x, pos2.y, size2.x, size2.y,
|
Window xwindow = XCreateWindow( xdisplay, xparent, pos2.x, pos2.y, size2.x, size2.y,
|
||||||
0, DefaultDepth(xdisplay,xscreen), InputOutput, xvisual, xattributes_mask, &xattributes );
|
0, DefaultDepth(xdisplay,xscreen), InputOutput, xvisual, xattributes_mask, &xattributes );
|
||||||
|
#endif
|
||||||
m_mainWidget = (WXWindow) xwindow;
|
m_mainWidget = (WXWindow) xwindow;
|
||||||
|
|
||||||
XSelectInput( xdisplay, xwindow,
|
int extraFlags = 0;
|
||||||
#if wxUSE_NANOX
|
#if wxUSE_NANOX
|
||||||
GR_EVENT_MASK_CLOSE_REQ |
|
extraFlags |= GR_EVENT_MASK_CLOSE_REQ;
|
||||||
#endif
|
#endif
|
||||||
ExposureMask | KeyPressMask | KeyReleaseMask | ButtonPressMask | ButtonReleaseMask |
|
|
||||||
|
XSelectInput( xdisplay, xwindow,
|
||||||
|
extraFlags | ExposureMask | KeyPressMask | KeyReleaseMask | ButtonPressMask | ButtonReleaseMask |
|
||||||
ButtonMotionMask | EnterWindowMask | LeaveWindowMask | PointerMotionMask |
|
ButtonMotionMask | EnterWindowMask | LeaveWindowMask | PointerMotionMask |
|
||||||
KeymapStateMask | FocusChangeMask | ColormapChangeMask | StructureNotifyMask |
|
KeymapStateMask | FocusChangeMask | ColormapChangeMask | StructureNotifyMask |
|
||||||
PropertyChangeMask );
|
PropertyChangeMask );
|
||||||
@@ -147,6 +160,7 @@ bool wxTopLevelWindowX11::Create(wxWindow *parent,
|
|||||||
// background completely.
|
// background completely.
|
||||||
XSetWindowBackgroundPixmap( xdisplay, xwindow, None );
|
XSetWindowBackgroundPixmap( xdisplay, xwindow, None );
|
||||||
|
|
||||||
|
#if !wxUSE_NANOX
|
||||||
if (GetExtraStyle() & wxTOPLEVEL_EX_DIALOG)
|
if (GetExtraStyle() & wxTOPLEVEL_EX_DIALOG)
|
||||||
{
|
{
|
||||||
if (GetParent() && GetParent()->GetMainWindow())
|
if (GetParent() && GetParent()->GetMainWindow())
|
||||||
@@ -163,15 +177,17 @@ bool wxTopLevelWindowX11::Create(wxWindow *parent,
|
|||||||
size_hints.height = size2.y;
|
size_hints.height = size2.y;
|
||||||
XSetWMNormalHints( xdisplay, xwindow, &size_hints);
|
XSetWMNormalHints( xdisplay, xwindow, &size_hints);
|
||||||
|
|
||||||
|
XWMHints wm_hints;
|
||||||
wm_hints.flags = InputHint | StateHint /* | WindowGroupHint */;
|
wm_hints.flags = InputHint | StateHint /* | WindowGroupHint */;
|
||||||
wm_hints.input = True;
|
wm_hints.input = True;
|
||||||
wm_hints.initial_state = NormalState;
|
wm_hints.initial_state = NormalState;
|
||||||
XSetWMHints( xdisplay, xwindow, &wm_hints);
|
XSetWMHints( xdisplay, xwindow, &wm_hints);
|
||||||
|
|
||||||
Atom wm_protocols[2];
|
Atom wm_protocols[2];
|
||||||
wm_protocols[0] = XInternAtom( xdisplay, "WM_DELETE_WINDOW", False );
|
wm_protocols[0] = XInternAtom( xdisplay, "WM_DELETE_WINDOW", False );
|
||||||
wm_protocols[1] = XInternAtom( xdisplay, "WM_TAKE_FOCUS", False );
|
wm_protocols[1] = XInternAtom( xdisplay, "WM_TAKE_FOCUS", False );
|
||||||
XSetWMProtocols( xdisplay, xwindow, wm_protocols, 2);
|
XSetWMProtocols( xdisplay, xwindow, wm_protocols, 2);
|
||||||
|
#endif
|
||||||
|
|
||||||
wxSetWMDecorations( xwindow, style);
|
wxSetWMDecorations( xwindow, style);
|
||||||
|
|
||||||
@@ -287,6 +303,8 @@ void wxTopLevelWindowX11::SetIcon(const wxIcon& icon)
|
|||||||
|
|
||||||
if (icon.Ok() && GetMainWindow())
|
if (icon.Ok() && GetMainWindow())
|
||||||
{
|
{
|
||||||
|
#if wxUSE_NANOX
|
||||||
|
#else
|
||||||
XWMHints *wmHints = XAllocWMHints();
|
XWMHints *wmHints = XAllocWMHints();
|
||||||
wmHints->icon_pixmap = (Pixmap) icon.GetPixmap();
|
wmHints->icon_pixmap = (Pixmap) icon.GetPixmap();
|
||||||
|
|
||||||
@@ -300,6 +318,7 @@ void wxTopLevelWindowX11::SetIcon(const wxIcon& icon)
|
|||||||
|
|
||||||
XSetWMHints(wxGlobalDisplay(), (Window) GetMainWindow(), wmHints);
|
XSetWMHints(wxGlobalDisplay(), (Window) GetMainWindow(), wmHints);
|
||||||
XFree(wmHints);
|
XFree(wmHints);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -361,6 +380,63 @@ struct MwmHints {
|
|||||||
// given wxWindows style
|
// given wxWindows style
|
||||||
bool wxSetWMDecorations(Window w, long style)
|
bool wxSetWMDecorations(Window w, long style)
|
||||||
{
|
{
|
||||||
|
#if wxUSE_NANOX
|
||||||
|
GR_WM_PROPERTIES wmProp;
|
||||||
|
|
||||||
|
wmProp.flags = 0;
|
||||||
|
|
||||||
|
if (style & wxRESIZE_BORDER)
|
||||||
|
{
|
||||||
|
wmProp.props |= GR_WM_PROPS_APPFRAME ;
|
||||||
|
wmProp.flags |= GR_WM_FLAGS_PROPS ;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (style & wxSYSTEM_MENU)
|
||||||
|
{
|
||||||
|
wmProp.props |= GR_WM_PROPS_CLOSEBOX ;
|
||||||
|
wmProp.flags |= GR_WM_FLAGS_PROPS ;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((style & wxCAPTION) ||
|
||||||
|
(style & wxTINY_CAPTION_HORIZ) ||
|
||||||
|
(style & wxTINY_CAPTION_VERT))
|
||||||
|
{
|
||||||
|
wmProp.props |= GR_WM_PROPS_CAPTION ;
|
||||||
|
wmProp.flags |= GR_WM_FLAGS_PROPS ;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (style & wxTHICK_FRAME)
|
||||||
|
{
|
||||||
|
wmProp.props |= GR_WM_PROPS_APPFRAME ;
|
||||||
|
wmProp.flags |= GR_WM_FLAGS_PROPS ;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (style & wxSIMPLE_BORDER)
|
||||||
|
{
|
||||||
|
wmProp.props |= GR_WM_PROPS_BORDER ;
|
||||||
|
wmProp.flags |= GR_WM_FLAGS_PROPS ;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (style & wxMINIMIZE_BOX)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
if (style & wxMAXIMIZE_BOX)
|
||||||
|
{
|
||||||
|
wmProp.props |= GR_WM_PROPS_MAXIMIZE ;
|
||||||
|
wmProp.flags |= GR_WM_FLAGS_PROPS ;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (((style & wxBORDER) != wxBORDER) && ((style & wxTHICK_FRAME) != wxTHICK_FRAME)
|
||||||
|
&& ((style & wxRESIZE_BORDER) != wxRESIZE_BORDER))
|
||||||
|
{
|
||||||
|
wmProp.props |= GR_WM_PROPS_NODECORATE ;
|
||||||
|
wmProp.flags |= GR_WM_FLAGS_PROPS ;
|
||||||
|
}
|
||||||
|
|
||||||
|
GrSetWMProperties(w, & wmProp);
|
||||||
|
|
||||||
|
#else
|
||||||
if (!wxMWMIsRunning(w))
|
if (!wxMWMIsRunning(w))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
@@ -419,11 +495,15 @@ bool wxSetWMDecorations(Window w, long style)
|
|||||||
32, PropModeReplace,
|
32, PropModeReplace,
|
||||||
(unsigned char *) &hints, PROP_MOTIF_WM_HINTS_ELEMENTS);
|
(unsigned char *) &hints, PROP_MOTIF_WM_HINTS_ELEMENTS);
|
||||||
|
|
||||||
|
#endif
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxMWMIsRunning(Window w)
|
bool wxMWMIsRunning(Window w)
|
||||||
{
|
{
|
||||||
|
#if wxUSE_NANOX
|
||||||
|
return FALSE;
|
||||||
|
#else
|
||||||
Display *dpy = (Display*)wxGetDisplay();
|
Display *dpy = (Display*)wxGetDisplay();
|
||||||
Atom motifWmInfo = XInternAtom(dpy, "_MOTIF_WM_INFO", False);
|
Atom motifWmInfo = XInternAtom(dpy, "_MOTIF_WM_INFO", False);
|
||||||
|
|
||||||
@@ -441,6 +521,7 @@ bool wxMWMIsRunning(Window w)
|
|||||||
&type, &format, &length, &bytesafter, &ptr);
|
&type, &format, &length, &bytesafter, &ptr);
|
||||||
|
|
||||||
return (ret == Success);
|
return (ret == Success);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
// For implementation purposes - sometimes decorations make the client area
|
// For implementation purposes - sometimes decorations make the client area
|
||||||
@@ -568,6 +649,7 @@ void wxTopLevelWindowX11::DoGetPosition(int *x, int *y) const
|
|||||||
int offsetX = 0;
|
int offsetX = 0;
|
||||||
int offsetY = 0;
|
int offsetY = 0;
|
||||||
|
|
||||||
|
#if !wxUSE_NANOX
|
||||||
wxLogDebug("Translating...");
|
wxLogDebug("Translating...");
|
||||||
Window childWindow;
|
Window childWindow;
|
||||||
XTranslateCoordinates(wxGlobalDisplay(), window, XDefaultRootWindow(wxGlobalDisplay()),
|
XTranslateCoordinates(wxGlobalDisplay(), window, XDefaultRootWindow(wxGlobalDisplay()),
|
||||||
@@ -576,6 +658,7 @@ void wxTopLevelWindowX11::DoGetPosition(int *x, int *y) const
|
|||||||
wxString msg;
|
wxString msg;
|
||||||
msg.Printf("Offset: %d, %d", offsetX, offsetY);
|
msg.Printf("Offset: %d, %d", offsetX, offsetY);
|
||||||
wxLogDebug(msg);
|
wxLogDebug(msg);
|
||||||
|
#endif
|
||||||
|
|
||||||
XWindowAttributes attr;
|
XWindowAttributes attr;
|
||||||
Status status = XGetWindowAttributes(wxGlobalDisplay(), window, & attr);
|
Status status = XGetWindowAttributes(wxGlobalDisplay(), window, & attr);
|
||||||
|
@@ -568,6 +568,11 @@ wxSetDefaultResources (const Widget w, const char **resourceSpec, const char *na
|
|||||||
|
|
||||||
void wxGetMousePosition( int* x, int* y )
|
void wxGetMousePosition( int* x, int* y )
|
||||||
{
|
{
|
||||||
|
#if wxUSE_NANOX
|
||||||
|
// TODO
|
||||||
|
*x = 0;
|
||||||
|
*y = 0;
|
||||||
|
#else
|
||||||
XMotionEvent xev;
|
XMotionEvent xev;
|
||||||
Window root, child;
|
Window root, child;
|
||||||
XQueryPointer((Display*) wxGetDisplay(),
|
XQueryPointer((Display*) wxGetDisplay(),
|
||||||
@@ -578,6 +583,7 @@ void wxGetMousePosition( int* x, int* y )
|
|||||||
&(xev.state));
|
&(xev.state));
|
||||||
*x = xev.x_root;
|
*x = xev.x_root;
|
||||||
*y = xev.y_root;
|
*y = xev.y_root;
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
// Return TRUE if we have a colour display
|
// Return TRUE if we have a colour display
|
||||||
@@ -683,7 +689,7 @@ bool wxSetDisplay(const wxString& display_name)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
#endif
|
#endif
|
||||||
#ifdef __WXX11__
|
#ifdef __WXX11__
|
||||||
Display* display = XOpenDisplay((const char*) display_name);
|
Display* display = XOpenDisplay((char*) display_name.c_str());
|
||||||
|
|
||||||
if (display)
|
if (display)
|
||||||
{
|
{
|
||||||
@@ -1015,6 +1021,7 @@ void wxXColorToHSV(wxHSV *hsv,XColor *rgb)
|
|||||||
|
|
||||||
void wxAllocNearestColor(Display *d,Colormap cmp,XColor *xc)
|
void wxAllocNearestColor(Display *d,Colormap cmp,XColor *xc)
|
||||||
{
|
{
|
||||||
|
#if !wxUSE_NANOX
|
||||||
int llp;
|
int llp;
|
||||||
|
|
||||||
int screen = DefaultScreen(d);
|
int screen = DefaultScreen(d);
|
||||||
@@ -1051,6 +1058,7 @@ void wxAllocNearestColor(Display *d,Colormap cmp,XColor *xc)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
delete[] color_defs;
|
delete[] color_defs;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxAllocColor(Display *d,Colormap cmp,XColor *xc)
|
void wxAllocColor(Display *d,Colormap cmp,XColor *xc)
|
||||||
@@ -1065,6 +1073,10 @@ void wxAllocColor(Display *d,Colormap cmp,XColor *xc)
|
|||||||
#ifdef __WXDEBUG__
|
#ifdef __WXDEBUG__
|
||||||
wxString wxGetXEventName(XEvent& event)
|
wxString wxGetXEventName(XEvent& event)
|
||||||
{
|
{
|
||||||
|
#if wxUSE_NANOX
|
||||||
|
wxString str(wxT("(some event)"));
|
||||||
|
return str;
|
||||||
|
#else
|
||||||
int type = event.xany.type;
|
int type = event.xany.type;
|
||||||
static char* event_name[] = {
|
static char* event_name[] = {
|
||||||
"", "unknown(-)", // 0-1
|
"", "unknown(-)", // 0-1
|
||||||
@@ -1082,7 +1094,8 @@ wxString wxGetXEventName(XEvent& event)
|
|||||||
type = wxMin(35, type); type = wxMax(1, type);
|
type = wxMin(35, type); type = wxMax(1, type);
|
||||||
wxString str(event_name[type]);
|
wxString str(event_name[type]);
|
||||||
return str;
|
return str;
|
||||||
}
|
#endif
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __WXMOTIF__
|
#ifdef __WXMOTIF__
|
||||||
|
@@ -47,6 +47,11 @@
|
|||||||
#include "wx/x11/private.h"
|
#include "wx/x11/private.h"
|
||||||
#include "X11/Xutil.h"
|
#include "X11/Xutil.h"
|
||||||
|
|
||||||
|
#if wxUSE_NANOX
|
||||||
|
// For wxGetLocalTime, used by XButtonEventGetTime
|
||||||
|
#include "wx/timer.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@@ -136,6 +141,7 @@ bool wxWindowX11::Create(wxWindow *parent, wxWindowID id,
|
|||||||
|
|
||||||
Window xparent = (Window) parent->GetMainWindow();
|
Window xparent = (Window) parent->GetMainWindow();
|
||||||
|
|
||||||
|
#if !wxUSE_NANOX
|
||||||
XSetWindowAttributes xattributes;
|
XSetWindowAttributes xattributes;
|
||||||
|
|
||||||
long xattributes_mask =
|
long xattributes_mask =
|
||||||
@@ -150,6 +156,7 @@ bool wxWindowX11::Create(wxWindow *parent, wxWindowID id,
|
|||||||
ButtonMotionMask | EnterWindowMask | LeaveWindowMask | PointerMotionMask |
|
ButtonMotionMask | EnterWindowMask | LeaveWindowMask | PointerMotionMask |
|
||||||
KeymapStateMask | FocusChangeMask | ColormapChangeMask | StructureNotifyMask |
|
KeymapStateMask | FocusChangeMask | ColormapChangeMask | StructureNotifyMask |
|
||||||
PropertyChangeMask;
|
PropertyChangeMask;
|
||||||
|
#endif
|
||||||
|
|
||||||
wxSize size2(size);
|
wxSize size2(size);
|
||||||
if (size2.x == -1)
|
if (size2.x == -1)
|
||||||
@@ -163,9 +170,28 @@ bool wxWindowX11::Create(wxWindow *parent, wxWindowID id,
|
|||||||
if (pos2.y == -1)
|
if (pos2.y == -1)
|
||||||
pos2.y = 0;
|
pos2.y = 0;
|
||||||
|
|
||||||
|
#if wxUSE_NANOX
|
||||||
|
int extraFlags = GR_EVENT_MASK_CLOSE_REQ;
|
||||||
|
|
||||||
|
long backColor, foreColor;
|
||||||
|
backColor = GR_RGB(m_backgroundColour.Red(), m_backgroundColour.Green(), m_backgroundColour.Blue());
|
||||||
|
foreColor = GR_RGB(m_foregroundColour.Red(), m_foregroundColour.Green(), m_foregroundColour.Blue());
|
||||||
|
|
||||||
|
Window xwindow = XCreateWindowWithColor( xdisplay, xparent, pos2.x, pos2.y, size2.x, size2.y,
|
||||||
|
0, 0, InputOutput, xvisual, backColor, foreColor);
|
||||||
|
XSelectInput( xdisplay, xwindow,
|
||||||
|
extraFlags | ExposureMask | KeyPressMask | KeyReleaseMask | ButtonPressMask | ButtonReleaseMask |
|
||||||
|
ButtonMotionMask | EnterWindowMask | LeaveWindowMask | PointerMotionMask |
|
||||||
|
KeymapStateMask | FocusChangeMask | ColormapChangeMask | StructureNotifyMask |
|
||||||
|
PropertyChangeMask );
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
Window xwindow = XCreateWindow( xdisplay, xparent, pos2.x, pos2.y, size2.x, size2.y,
|
Window xwindow = XCreateWindow( xdisplay, xparent, pos2.x, pos2.y, size2.x, size2.y,
|
||||||
0, DefaultDepth(xdisplay,xscreen), InputOutput, xvisual, xattributes_mask, &xattributes );
|
0, DefaultDepth(xdisplay,xscreen), InputOutput, xvisual, xattributes_mask, &xattributes );
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
m_mainWidget = (WXWindow) xwindow;
|
m_mainWidget = (WXWindow) xwindow;
|
||||||
|
|
||||||
wxAddWindowToTable( xwindow, (wxWindow*) this );
|
wxAddWindowToTable( xwindow, (wxWindow*) this );
|
||||||
@@ -786,6 +812,7 @@ void wxWindowX11::SetSizeHints(int minW, int minH, int maxW, int maxH, int incW,
|
|||||||
m_maxWidth = maxW;
|
m_maxWidth = maxW;
|
||||||
m_maxHeight = maxH;
|
m_maxHeight = maxH;
|
||||||
|
|
||||||
|
#if !wxUSE_NANOX
|
||||||
XSizeHints sizeHints;
|
XSizeHints sizeHints;
|
||||||
sizeHints.flags = 0;
|
sizeHints.flags = 0;
|
||||||
|
|
||||||
@@ -809,6 +836,7 @@ void wxWindowX11::SetSizeHints(int minW, int minH, int maxW, int maxH, int incW,
|
|||||||
}
|
}
|
||||||
|
|
||||||
XSetWMNormalHints(wxGlobalDisplay(), (Window) GetMainWindow(), & sizeHints);
|
XSetWMNormalHints(wxGlobalDisplay(), (Window) GetMainWindow(), & sizeHints);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxWindowX11::DoMoveWindow(int x, int y, int width, int height)
|
void wxWindowX11::DoMoveWindow(int x, int y, int width, int height)
|
||||||
@@ -883,7 +911,7 @@ void wxWindowX11::GetTextExtent(const wxString& string,
|
|||||||
&ascent, &descent2, &overall);
|
&ascent, &descent2, &overall);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
XTextExtents((XFontStruct*) pFontStruct, string.c_str(), slen,
|
XTextExtents((XFontStruct*) pFontStruct, (char*) string.c_str(), slen,
|
||||||
&direction, &ascent, &descent2, &overall);
|
&direction, &ascent, &descent2, &overall);
|
||||||
|
|
||||||
if ( x )
|
if ( x )
|
||||||
@@ -1109,7 +1137,7 @@ WXWindow wxWindowX11::GetMainWindow() const
|
|||||||
|
|
||||||
bool wxTranslateMouseEvent(wxMouseEvent& wxevent, wxWindow *win, Window window, XEvent *xevent)
|
bool wxTranslateMouseEvent(wxMouseEvent& wxevent, wxWindow *win, Window window, XEvent *xevent)
|
||||||
{
|
{
|
||||||
switch (xevent->xany.type)
|
switch (XEventGetType(xevent))
|
||||||
{
|
{
|
||||||
case EnterNotify:
|
case EnterNotify:
|
||||||
case LeaveNotify:
|
case LeaveNotify:
|
||||||
@@ -1119,39 +1147,39 @@ bool wxTranslateMouseEvent(wxMouseEvent& wxevent, wxWindow *win, Window window,
|
|||||||
{
|
{
|
||||||
wxEventType eventType = wxEVT_NULL;
|
wxEventType eventType = wxEVT_NULL;
|
||||||
|
|
||||||
if (xevent->xany.type == EnterNotify)
|
if (XEventGetType(xevent) == EnterNotify)
|
||||||
{
|
{
|
||||||
//if (local_event.xcrossing.mode!=NotifyNormal)
|
//if (local_event.xcrossing.mode!=NotifyNormal)
|
||||||
// return ; // Ignore grab events
|
// return ; // Ignore grab events
|
||||||
eventType = wxEVT_ENTER_WINDOW;
|
eventType = wxEVT_ENTER_WINDOW;
|
||||||
// canvas->GetEventHandler()->OnSetFocus();
|
// canvas->GetEventHandler()->OnSetFocus();
|
||||||
}
|
}
|
||||||
else if (xevent->xany.type == LeaveNotify)
|
else if (XEventGetType(xevent) == LeaveNotify)
|
||||||
{
|
{
|
||||||
//if (local_event.xcrossingr.mode!=NotifyNormal)
|
//if (local_event.xcrossingr.mode!=NotifyNormal)
|
||||||
// return ; // Ignore grab events
|
// return ; // Ignore grab events
|
||||||
eventType = wxEVT_LEAVE_WINDOW;
|
eventType = wxEVT_LEAVE_WINDOW;
|
||||||
// canvas->GetEventHandler()->OnKillFocus();
|
// canvas->GetEventHandler()->OnKillFocus();
|
||||||
}
|
}
|
||||||
else if (xevent->xany.type == MotionNotify)
|
else if (XEventGetType(xevent) == MotionNotify)
|
||||||
{
|
{
|
||||||
eventType = wxEVT_MOTION;
|
eventType = wxEVT_MOTION;
|
||||||
}
|
}
|
||||||
else if (xevent->xany.type == ButtonPress)
|
else if (XEventGetType(xevent) == ButtonPress)
|
||||||
{
|
{
|
||||||
wxevent.SetTimestamp(xevent->xbutton.time);
|
wxevent.SetTimestamp(XButtonEventGetTime(xevent));
|
||||||
int button = 0;
|
int button = 0;
|
||||||
if (xevent->xbutton.button == Button1)
|
if (XButtonEventLChanged(xevent))
|
||||||
{
|
{
|
||||||
eventType = wxEVT_LEFT_DOWN;
|
eventType = wxEVT_LEFT_DOWN;
|
||||||
button = 1;
|
button = 1;
|
||||||
}
|
}
|
||||||
else if (xevent->xbutton.button == Button2)
|
else if (XButtonEventMChanged(xevent))
|
||||||
{
|
{
|
||||||
eventType = wxEVT_MIDDLE_DOWN;
|
eventType = wxEVT_MIDDLE_DOWN;
|
||||||
button = 2;
|
button = 2;
|
||||||
}
|
}
|
||||||
else if (xevent->xbutton.button == Button3)
|
else if (XButtonEventRChanged(xevent))
|
||||||
{
|
{
|
||||||
eventType = wxEVT_RIGHT_DOWN;
|
eventType = wxEVT_RIGHT_DOWN;
|
||||||
button = 3;
|
button = 3;
|
||||||
@@ -1182,17 +1210,17 @@ bool wxTranslateMouseEvent(wxMouseEvent& wxevent, wxWindow *win, Window window,
|
|||||||
win->SetLastClick(button, ts);
|
win->SetLastClick(button, ts);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (xevent->xany.type == ButtonRelease)
|
else if (XEventGetType(xevent) == ButtonRelease)
|
||||||
{
|
{
|
||||||
if (xevent->xbutton.button == Button1)
|
if (XButtonEventLChanged(xevent))
|
||||||
{
|
{
|
||||||
eventType = wxEVT_LEFT_UP;
|
eventType = wxEVT_LEFT_UP;
|
||||||
}
|
}
|
||||||
else if (xevent->xbutton.button == Button2)
|
else if (XButtonEventMChanged(xevent))
|
||||||
{
|
{
|
||||||
eventType = wxEVT_MIDDLE_UP;
|
eventType = wxEVT_MIDDLE_UP;
|
||||||
}
|
}
|
||||||
else if (xevent->xbutton.button == Button3)
|
else if (XButtonEventRChanged(xevent))
|
||||||
{
|
{
|
||||||
eventType = wxEVT_RIGHT_UP;
|
eventType = wxEVT_RIGHT_UP;
|
||||||
}
|
}
|
||||||
@@ -1205,23 +1233,23 @@ bool wxTranslateMouseEvent(wxMouseEvent& wxevent, wxWindow *win, Window window,
|
|||||||
|
|
||||||
wxevent.SetEventType(eventType);
|
wxevent.SetEventType(eventType);
|
||||||
|
|
||||||
wxevent.m_x = xevent->xbutton.x;
|
wxevent.m_x = XButtonEventGetX(xevent);
|
||||||
wxevent.m_y = xevent->xbutton.y;
|
wxevent.m_y = XButtonEventGetY(xevent);
|
||||||
|
|
||||||
wxevent.m_leftDown = ((eventType == wxEVT_LEFT_DOWN)
|
wxevent.m_leftDown = ((eventType == wxEVT_LEFT_DOWN)
|
||||||
|| (event_left_is_down (xevent)
|
|| (XButtonEventLIsDown(xevent)
|
||||||
&& (eventType != wxEVT_LEFT_UP)));
|
&& (eventType != wxEVT_LEFT_UP)));
|
||||||
wxevent.m_middleDown = ((eventType == wxEVT_MIDDLE_DOWN)
|
wxevent.m_middleDown = ((eventType == wxEVT_MIDDLE_DOWN)
|
||||||
|| (event_middle_is_down (xevent)
|
|| (XButtonEventMIsDown(xevent)
|
||||||
&& (eventType != wxEVT_MIDDLE_UP)));
|
&& (eventType != wxEVT_MIDDLE_UP)));
|
||||||
wxevent.m_rightDown = ((eventType == wxEVT_RIGHT_DOWN)
|
wxevent.m_rightDown = ((eventType == wxEVT_RIGHT_DOWN)
|
||||||
|| (event_right_is_down (xevent)
|
|| (XButtonEventRIsDown (xevent)
|
||||||
&& (eventType != wxEVT_RIGHT_UP)));
|
&& (eventType != wxEVT_RIGHT_UP)));
|
||||||
|
|
||||||
wxevent.m_shiftDown = xevent->xbutton.state & ShiftMask;
|
wxevent.m_shiftDown = XButtonEventShiftIsDown(xevent);
|
||||||
wxevent.m_controlDown = xevent->xbutton.state & ControlMask;
|
wxevent.m_controlDown = XButtonEventCtrlIsDown(xevent);
|
||||||
wxevent.m_altDown = xevent->xbutton.state & Mod3Mask;
|
wxevent.m_altDown = XButtonEventAltIsDown(xevent);
|
||||||
wxevent.m_metaDown = xevent->xbutton.state & Mod1Mask;
|
wxevent.m_metaDown = XButtonEventMetaIsDown(xevent);
|
||||||
|
|
||||||
wxevent.SetId(win->GetId());
|
wxevent.SetId(win->GetId());
|
||||||
wxevent.SetEventObject(win);
|
wxevent.SetEventObject(win);
|
||||||
@@ -1234,7 +1262,7 @@ bool wxTranslateMouseEvent(wxMouseEvent& wxevent, wxWindow *win, Window window,
|
|||||||
|
|
||||||
bool wxTranslateKeyEvent(wxKeyEvent& wxevent, wxWindow *win, Window WXUNUSED(win), XEvent *xevent)
|
bool wxTranslateKeyEvent(wxKeyEvent& wxevent, wxWindow *win, Window WXUNUSED(win), XEvent *xevent)
|
||||||
{
|
{
|
||||||
switch (xevent->xany.type)
|
switch (XEventGetType(xevent))
|
||||||
{
|
{
|
||||||
case KeyPress:
|
case KeyPress:
|
||||||
case KeyRelease:
|
case KeyRelease:
|
||||||
@@ -1245,20 +1273,16 @@ bool wxTranslateKeyEvent(wxKeyEvent& wxevent, wxWindow *win, Window WXUNUSED(win
|
|||||||
(void) XLookupString ((XKeyEvent *) xevent, buf, 20, &keySym, NULL);
|
(void) XLookupString ((XKeyEvent *) xevent, buf, 20, &keySym, NULL);
|
||||||
int id = wxCharCodeXToWX (keySym);
|
int id = wxCharCodeXToWX (keySym);
|
||||||
|
|
||||||
if (xevent->xkey.state & ShiftMask)
|
wxevent.m_shiftDown = XKeyEventShiftIsDown(xevent);
|
||||||
wxevent.m_shiftDown = TRUE;
|
wxevent.m_controlDown = XKeyEventCtrlIsDown(xevent);
|
||||||
if (xevent->xkey.state & ControlMask)
|
wxevent.m_altDown = XKeyEventAltIsDown(xevent);
|
||||||
wxevent.m_controlDown = TRUE;
|
wxevent.m_metaDown = XKeyEventMetaIsDown(xevent);
|
||||||
if (xevent->xkey.state & Mod3Mask)
|
|
||||||
wxevent.m_altDown = TRUE;
|
|
||||||
if (xevent->xkey.state & Mod1Mask)
|
|
||||||
wxevent.m_metaDown = TRUE;
|
|
||||||
wxevent.SetEventObject(win);
|
wxevent.SetEventObject(win);
|
||||||
wxevent.m_keyCode = id;
|
wxevent.m_keyCode = id;
|
||||||
wxevent.SetTimestamp(xevent->xkey.time);
|
wxevent.SetTimestamp(XKeyEventGetTime(xevent));
|
||||||
|
|
||||||
wxevent.m_x = xevent->xbutton.x;
|
wxevent.m_x = XKeyEventGetX(xevent);
|
||||||
wxevent.m_y = xevent->xbutton.y;
|
wxevent.m_y = XKeyEventGetY(xevent);
|
||||||
|
|
||||||
if (id > -1)
|
if (id > -1)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@@ -1338,6 +1362,10 @@ wxWindow* wxFindWindowAtPointer(wxPoint& pt)
|
|||||||
// Get the current mouse position.
|
// Get the current mouse position.
|
||||||
wxPoint wxGetMousePosition()
|
wxPoint wxGetMousePosition()
|
||||||
{
|
{
|
||||||
|
#if wxUSE_NANOX
|
||||||
|
/* TODO */
|
||||||
|
return wxPoint(0, 0);
|
||||||
|
#else
|
||||||
Display *display = wxGlobalDisplay();
|
Display *display = wxGlobalDisplay();
|
||||||
Window rootWindow = RootWindowOfScreen (DefaultScreenOfDisplay(display));
|
Window rootWindow = RootWindowOfScreen (DefaultScreenOfDisplay(display));
|
||||||
Window rootReturn, childReturn;
|
Window rootReturn, childReturn;
|
||||||
@@ -1350,6 +1378,7 @@ wxPoint wxGetMousePosition()
|
|||||||
&childReturn,
|
&childReturn,
|
||||||
&rootX, &rootY, &winX, &winY, &maskReturn);
|
&rootX, &rootY, &winX, &winY, &maskReturn);
|
||||||
return wxPoint(rootX, rootY);
|
return wxPoint(rootX, rootY);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user