mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-01-29 17:16:48 +01:00
822326eea9
From wxWidgets master 81570ae070b35c9d52de47b1f14897f3ff1a66c7. include/wx/defs.h -- __w64 warning disable patch by comex brought forward. include/wx/msw/window.h -- added GetContentScaleFactor() which was not implemented on Windows but is necessary for wxBitmap scaling on Mac OS X so it needs to work to avoid #ifdef-ing the code. src/gtk/window.cpp -- Modified DoSetClientSize() to direct call wxWindowGTK::DoSetSize() instead of using public wxWindowBase::SetSize() which now prevents derived classes (like wxAuiToolbar) intercepting the call and breaking it. This matches Windows which does NOT need to call DoSetSize internally. End result is this fixes Dolphin's debug tools toolbars on Linux. src/osx/window_osx.cpp -- Same fix as for GTK since it has the same issue. src/msw/radiobox.cpp -- Hacked to fix display in HiDPI (was clipping off end of text). Updated CMakeLists for Linux and Mac OS X. Small code changes to Dolphin to fix debug error boxes, deprecation warnings, and retain previous UI behavior on Windows.
357 lines
13 KiB
C
357 lines
13 KiB
C
/*
|
|
* Xlib compatibility
|
|
*/
|
|
|
|
#ifndef _DUMMY_XLIBH_
|
|
#define _DUMMY_XLIBH_
|
|
|
|
/* Move away the typedef in XtoNX.h */
|
|
#define XFontStruct XFontStruct1
|
|
#include <XtoNX.h>
|
|
#undef XFontStruct
|
|
#undef XCharStruct
|
|
|
|
/* Data types */
|
|
|
|
typedef GR_PALETTE* Colormap;
|
|
typedef GR_DRAW_ID Drawable ;
|
|
typedef int Status;
|
|
typedef unsigned long VisualID;
|
|
typedef int Bool;
|
|
typedef long XID;
|
|
typedef GR_SCANCODE KeySym;
|
|
typedef GR_EVENT_KEYSTROKE XKeyEvent;
|
|
typedef struct {
|
|
GR_FONT_INFO info;
|
|
GR_FONT_ID fid;
|
|
} XFontStruct;
|
|
typedef struct {
|
|
short lbearing; /* origin to left edge of raster */
|
|
short rbearing; /* origin to right edge of raster */
|
|
short width; /* advance to next char's origin */
|
|
short ascent; /* baseline to top edge of raster */
|
|
short descent; /* baseline to bottom edge of raster */
|
|
unsigned short attributes; /* per char flags (not predefined) */
|
|
} 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; */
|
|
|
|
#define Success 0
|
|
#define GrabSuccess Success
|
|
#define GrabNotViewable (Success+1)
|
|
#define InputOutput 1
|
|
#define InputOnly 2
|
|
#define IsUnmapped 0
|
|
#define IsUnviewable 1
|
|
#define IsViewable 2
|
|
/* Is this right? */
|
|
#define PropertyChangeMask GR_EVENT_MASK_SELECTION_CHANGED
|
|
#define GraphicsExpose GR_EVENT_TYPE_EXPOSURE
|
|
#define GraphicsExposeMask GR_EVENT_MASK_EXPOSURE
|
|
#define ColormapChangeMask 0
|
|
#define FillSolid 0
|
|
#define LineSolid 0
|
|
#define LineOnOffDash 0
|
|
#define CapNotLast 0
|
|
#define CapRound 0
|
|
#define CapProjecting 0
|
|
#define CapButt 0
|
|
#define JoinRound 0
|
|
#define JoinBevel 0
|
|
#define JoinMiter 0
|
|
#define IncludeInferiors 0
|
|
#define ClipByChildren 0
|
|
#define DoRed 0
|
|
#define DoGreen 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 GXclear GR_MODE_CLEAR
|
|
#ifndef GXxor
|
|
#define GXxor GR_MODE_OR
|
|
#endif
|
|
#define GXinvert GR_MODE_INVERT
|
|
#define GXorReverse GR_MODE_ORREVERSE
|
|
#define GXandReverse GR_MODE_ANDREVERSE
|
|
#define GXand GR_MODE_AND
|
|
#define GXor GR_MODE_OR
|
|
#define GXandInverted GR_MODE_ANDINVERTED
|
|
#define GXnoop GR_MODE_NOOP
|
|
#define GXnor GR_MODE_NOR
|
|
#define GXequiv GR_MODE_EQUIV
|
|
#define GXcopyInverted GR_MODE_COPYINVERTED
|
|
#define GXorInverted GR_MODE_ORINVERTED
|
|
#define GXnand GR_MODE_NAND
|
|
#define GXset GR_MODE_SET
|
|
|
|
#define XSynchronize(display,sync)
|
|
#define XDefaultRootWindow(d) GR_ROOT_WINDOW_ID
|
|
#define RootWindowOfScreen(s) GR_ROOT_WINDOW_ID
|
|
#define XFreePixmap(d, p) GrDestroyWindow(p)
|
|
#define XFreeCursor(d, c) GrDestroyCursor(c)
|
|
#define XFreeGC(d, gc) GrDestroyGC(gc)
|
|
#define XSetBackground(d, gc, c) GrSetGCBackground(gc, c)
|
|
#define DefaultVisual(d, s) (NULL)
|
|
#define DefaultColormap(d, s) DefaultColormapOfScreen(NULL)
|
|
#define DefaultScreenOfDisplay(d) 0
|
|
#define XSetFillStyle(d, gc, s) wxNoop()
|
|
#define XSetLineAttributes(d, gc, a, b, c, e) wxNoop()
|
|
#define XSetClipMask(d, gc, m) wxNoop()
|
|
#define XSetTSOrigin(d, gc, x, y) wxNoop()
|
|
#define XFillArc(d, w, gc, x, y, rx, ry, a1, a2) GrArcAngle(w, gc, x, y, rx, ry, a1, a2, GR_PIE)
|
|
#define XDrawArc(d, w, gc, x, y, rx, ry, a1, a2) GrArcAngle(w, gc, x, y, rx, ry, a1, a2, GR_ARC)
|
|
#define XDrawPoint(d, w, gc, x, y) GrPoint(w, gc, x, y)
|
|
#define XFillPolygon(d, w, gc, p, n, s, m) GrFillPoly(w, gc, n, p)
|
|
#define XDrawRectangle(d, w, gc, x, y, width, height) GrRect(w, gc, x, y, width, height)
|
|
#define XSetClipOrigin(d, gc, x, y) GrSetGCClipOrigin(gc, x, y)
|
|
#define XSetRegion(d, gc, r) GrSetGCRegion(gc, r)
|
|
#define XSetTile(d, gc, p) wxNoop()
|
|
#define XSetStipple(d, gc, p) wxNoop()
|
|
#define XSetSubwindowMode(d, gc, mode) wxNoop()
|
|
#define XFreeColormap(d, cmap) wxNoop()
|
|
#define XSetTransientForHint(d, w, p) wxNoop()
|
|
#define XUnionRegion(sr1,sr2,r) GrUnionRegion(r,sr1,sr2)
|
|
#define XIntersectRegion(sr1,sr2,r) GrIntersectRegion(r,sr1,sr2)
|
|
#define XEqualRegion(r1, r2) GrEqualRegion(r1, r2)
|
|
#define XEmptyRegion(r) GrEmptyRegion(r)
|
|
#define XOffsetRegion(r, x, y) GrOffsetRegion(r, x, y)
|
|
#define XClipBox(r, rect) GrGetRegionBox(r, rect)
|
|
#define XPointInRegion(r, x, y) GrPointInRegion(r, x, y)
|
|
#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,
|
|
* since they reference a static global.
|
|
* Redefined as functions, below.
|
|
*/
|
|
|
|
#undef DisplayWidth
|
|
#undef DisplayHeight
|
|
#undef DefaultDepth
|
|
|
|
/*
|
|
* Data structure used by color operations
|
|
*/
|
|
typedef struct {
|
|
unsigned long pixel;
|
|
unsigned short red, green, blue;
|
|
char flags; /* do_red, do_green, do_blue */
|
|
char pad;
|
|
} XColor;
|
|
|
|
typedef struct {
|
|
int type;
|
|
Display *display; /* Display the event was read from */
|
|
XID resourceid; /* resource id */
|
|
unsigned long serial; /* serial number of failed request */
|
|
unsigned char error_code; /* error code of failed request */
|
|
unsigned char request_code; /* Major op-code of failed request */
|
|
unsigned char minor_code; /* Minor op-code of failed request */
|
|
} XErrorEvent;
|
|
|
|
/*
|
|
* Visual structure; contains information about colormapping possible.
|
|
*/
|
|
typedef struct {
|
|
void *ext_data; /* hook for extension to hang data */
|
|
VisualID visualid; /* visual id of this visual */
|
|
#if defined(__cplusplus) || defined(c_plusplus)
|
|
int c_class; /* C++ class of screen (monochrome, etc.) */
|
|
#else
|
|
int class; /* class of screen (monochrome, etc.) */
|
|
#endif
|
|
unsigned long red_mask, green_mask, blue_mask; /* mask values */
|
|
int bits_per_rgb; /* log base 2 of distinct color values */
|
|
int map_entries; /* color map entries */
|
|
} Visual;
|
|
|
|
/*
|
|
* Depth structure; contains information for each possible depth.
|
|
*/
|
|
typedef struct {
|
|
int depth; /* this depth (Z) of the depth */
|
|
int nvisuals; /* number of Visual types at this depth */
|
|
Visual *visuals; /* list of visuals possible at this depth */
|
|
} Depth;
|
|
|
|
/*
|
|
* Information about the screen. The contents of this structure are
|
|
* implementation dependent. A Screen should be treated as opaque
|
|
* by application code.
|
|
*/
|
|
|
|
struct _XDisplay; /* Forward declare before use for C++ */
|
|
|
|
typedef struct {
|
|
void *ext_data; /* hook for extension to hang data */
|
|
struct _XDisplay *display;/* back pointer to display structure */
|
|
Window root; /* Root window id. */
|
|
int width, height; /* width and height of screen */
|
|
int mwidth, mheight; /* width and height of in millimeters */
|
|
int ndepths; /* number of depths possible */
|
|
Depth *depths; /* list of allowable depths on the screen */
|
|
int root_depth; /* bits per pixel */
|
|
Visual *root_visual; /* root visual */
|
|
GC default_gc; /* GC for the root root visual */
|
|
Colormap cmap; /* default color map */
|
|
unsigned long white_pixel;
|
|
unsigned long black_pixel; /* White and Black pixel values */
|
|
int max_maps, min_maps; /* max and min color maps */
|
|
int backing_store; /* Never, WhenMapped, Always */
|
|
Bool save_unders;
|
|
long root_input_mask; /* initial root input mask */
|
|
} Screen;
|
|
|
|
|
|
typedef struct {
|
|
int x, y; /* location of window */
|
|
int width, height; /* width and height of window */
|
|
int border_width; /* border width of window */
|
|
int depth; /* depth of window */
|
|
Visual *visual; /* the associated visual structure */
|
|
Window root; /* root of screen containing window */
|
|
int _class; /* InputOutput, InputOnly*/
|
|
int bit_gravity; /* one of the bit gravity values */
|
|
int win_gravity; /* one of the window gravity values */
|
|
int backing_store; /* NotUseful, WhenMapped, Always */
|
|
unsigned long backing_planes;/* planes to be preserved if possible */
|
|
unsigned long backing_pixel;/* value to be used when restoring planes */
|
|
Bool save_under; /* boolean, should bits under be saved? */
|
|
Colormap colormap; /* color map to be associated with window */
|
|
Bool map_installed; /* boolean, is color map currently installed*/
|
|
int map_state; /* IsUnmapped, IsUnviewable, IsViewable */
|
|
long all_event_masks; /* set of events all people have interest in*/
|
|
long your_event_mask; /* my event mask */
|
|
long do_not_propagate_mask;/* set of events that should not propagate */
|
|
Bool override_redirect; /* boolean value for override-redirect */
|
|
Screen *screen; /* back pointer to correct screen */
|
|
} XWindowAttributes;
|
|
|
|
typedef int (*XErrorHandler) ( /* WARNING, this type not in Xlib spec */
|
|
Display* /* display */,
|
|
XErrorEvent* /* error_event */
|
|
);
|
|
|
|
/* events*/
|
|
|
|
/* What should this be? */
|
|
#if 0
|
|
#ifndef ResizeRequest
|
|
#define ResizeRequest ??
|
|
#endif
|
|
#endif
|
|
|
|
#ifndef MotionNotify
|
|
#define MotionNotify GR_EVENT_TYPE_MOUSE_POSITION
|
|
#define PointerMotionMask GR_EVENT_MASK_MOUSE_POSITION
|
|
#endif
|
|
|
|
#define ButtonMotionMask GR_EVENT_MASK_MOUSE_POSITION
|
|
#define KeymapStateMask 0
|
|
#define StructureNotifyMask GR_EVENT_MASK_UPDATE
|
|
|
|
#ifdef ConfigureNotify
|
|
/* XtoNX.h gets it wrong */
|
|
#undef ConfigureNotify
|
|
#endif
|
|
#define ConfigureNotify GR_EVENT_TYPE_UPDATE
|
|
|
|
#ifndef FocusIn
|
|
#define FocusIn GR_EVENT_TYPE_FOCUS_IN
|
|
#define FocusOut GR_EVENT_TYPE_FOCUS_OUT
|
|
#define FocusChangeMask GR_EVENT_MASK_FOCUS_IN|GR_EVENT_MASK_FOCUS_OUT
|
|
#endif
|
|
|
|
/* Fuunctions */
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
Display *XOpenDisplay(char *name);
|
|
Colormap DefaultColormapOfScreen(Screen* /* screen */) ;
|
|
int XSetGraphicsExposures( Display* /* display */, GC /* gc */, Bool /* graphics_exposures */) ;
|
|
int XWarpPointer( Display* /* display */, Window /* srcW */, Window /* destW */,
|
|
int /* srcX */, int /* srcY */,
|
|
unsigned int /* srcWidth */,
|
|
unsigned int /* srcHeight */,
|
|
int destX, int destY);
|
|
int XSetInputFocus(Display* /* display */, Window focus, int /* revert_to */, Time /* time */) ;
|
|
int XGetInputFocus(Display* /* display */, Window* /* focus_return */, int* /* revert_to_return */) ;
|
|
int XGrabPointer(Display* /* display */, Window /* grab_window */,
|
|
Bool /* owner_events */, unsigned int /* event_mask */,
|
|
int /* pointer_mode */, int /* keyboard_mode */,
|
|
Window /* confine_to */, Cursor /* cursor */, Time /* time */) ;
|
|
int XUngrabPointer(Display* /* display */, Time /* time */) ;
|
|
int XCopyArea(Display* /* display */, Drawable src, Drawable dest, GC gc,
|
|
int src_x, int src_y, unsigned int width, unsigned int height,
|
|
int dest_x, int dest_y) ;
|
|
int XCopyPlane(Display* /* display */, Drawable src, Drawable dest, GC gc,
|
|
int src_x, int src_y, unsigned int width, unsigned int height,
|
|
int dest_x, int dest_y, unsigned long /* plane */) ;
|
|
|
|
XErrorHandler XSetErrorHandler (XErrorHandler /* handler */);
|
|
Screen *XScreenOfDisplay(Display* /* display */,
|
|
int /* screen_number */);
|
|
int DisplayWidth(Display* /* display */, int /* screen */);
|
|
int DisplayHeight(Display* /* display */, int /* screen */);
|
|
int DefaultDepth(Display* /* display */, int /* screen */);
|
|
int XAllocColor(Display* /* display */, Colormap /* cmap */,
|
|
XColor* color);
|
|
int XParseColor(Display* display, Colormap cmap,
|
|
const char* cname, XColor* color);
|
|
int XDrawLine(Display* display, Window win, GC gc,
|
|
int x1, int y1, int x2, int y2);
|
|
int XTextExtents( XFontStruct* font, char* s, int len, int* direction,
|
|
int* ascent, int* descent2, XCharStruct* overall);
|
|
int XPending(Display *d);
|
|
XFontStruct* XLoadQueryFont(Display* display, const char* fontSpec);
|
|
int XFreeFont(Display* display, XFontStruct* fontStruct);
|
|
int XQueryColor(Display* display, Colormap cmap, XColor* color);
|
|
Status XGetWindowAttributes(Display* display, Window w,
|
|
XWindowAttributes* window_attributes);
|
|
|
|
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);
|
|
|
|
void wxNoop();
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#define XMaxRequestSize(display) 16384
|
|
|
|
#endif
|
|
/* _DUMMY_XLIBH_ */
|