X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/31528cd3cac75558beef4bce0ba21fd182a808ab..0e4b997673524e38f2df8f9aa6c478098b5dd5ca:/src/motif/utils.cpp diff --git a/src/motif/utils.cpp b/src/motif/utils.cpp index e4cdc74fea..9f6ed67e35 100644 --- a/src/motif/utils.cpp +++ b/src/motif/utils.cpp @@ -17,6 +17,10 @@ // headers // ---------------------------------------------------------------------------- +#ifdef __VMS +#define XtDisplay XTDISPLAY +#endif + #include "wx/setup.h" #include "wx/utils.h" #include "wx/app.h" @@ -41,7 +45,13 @@ #include #endif +#ifdef __VMS__ +#pragma message disable nosimpint +#endif #include +#ifdef __VMS__ +#pragma message enable nosimpint +#endif #include "wx/unix/execute.h" @@ -123,7 +133,7 @@ bool wxCheckForInterrupt(wxWindow *wnd) // wxExecute stuff // ---------------------------------------------------------------------------- -static void xt_notify_end_process(XtPointer data, int *fid, +static void xt_notify_end_process(XtPointer data, int *WXUNUSED(fid), XtInputId *id) { wxEndProcessData *proc_data = (wxEndProcessData *)data; @@ -638,6 +648,28 @@ void wxDisplaySize(int *width, int *height) *height = DisplayHeight (dpy, DefaultScreen (dpy)); } +void wxDisplaySizeMM(int *width, int *height) +{ + Display *dpy = (Display*) wxGetDisplay(); + + if ( width ) + *width = DisplayWidthMM(dpy, DefaultScreen (dpy)); + if ( height ) + *height = DisplayHeightMM(dpy, DefaultScreen (dpy)); +} + +void wxClientDisplayRect(int *x, int *y, int *width, int *height) +{ + // This is supposed to return desktop dimensions minus any window + // manager panels, menus, taskbars, etc. If there is a way to do that + // for this platform please fix this function, otherwise it defaults + // to the entire desktop. + if (x) *x = 0; + if (y) *y = 0; + wxDisplaySize(width, height); +} + + // Configurable display in Motif static WXDisplay *gs_currentDisplay = NULL; static wxString gs_displayName; @@ -689,8 +721,6 @@ bool wxSetDisplay(const wxString& display_name) else return FALSE; } - - return FALSE; } wxString wxGetDisplayName() @@ -698,6 +728,11 @@ wxString wxGetDisplayName() return gs_displayName; } +wxWindow* wxFindWindowAtPoint(const wxPoint& pt) +{ + return wxGenericFindWindowAtPoint(pt); +} + // ---------------------------------------------------------------------------- // accelerators // ---------------------------------------------------------------------------- @@ -727,7 +762,12 @@ char wxFindMnemonic (const char *s) char * wxFindAccelerator (const char *s) { - // The accelerator text is after the \t char. + // VZ: this function returns incorrect keysym which completely breaks kbd + // handling + return NULL; + +#if 0 + // The accelerator text is after the \t char. while (*s && *s != '\t') s++; if (*s == '\0') @@ -774,11 +814,17 @@ char * wxFindAccelerator (const char *s) } delete[]tmp; return wxBuffer; +#endif } XmString wxFindAcceleratorText (const char *s) { - // The accelerator text is after the \t char. + // VZ: this function returns incorrect keysym which completely breaks kbd + // handling + return NULL; + +#if 0 + // The accelerator text is after the \t char. while (*s && *s != '\t') s++; if (*s == '\0') @@ -786,6 +832,7 @@ XmString wxFindAcceleratorText (const char *s) s++; XmString text = XmStringCreateSimple ((char *)s); return text; +#endif } // ---------------------------------------------------------------------------- @@ -1040,7 +1087,7 @@ void wxHSVToXColor(wxHSV *hsv,XColor *rgb) int h = hsv->h; int s = hsv->s; int v = hsv->v; - int r, g, b; + int r = 0, g = 0, b = 0; int i, f; int p, q, t; s = (s * wxMAX_RGB) / wxMAX_SV; @@ -1073,14 +1120,14 @@ void wxXColorToHSV(wxHSV *hsv,XColor *rgb) int b = rgb->blue >> 8; int maxv = wxMax3(r, g, b); int minv = wxMin3(r, g, b); - int h, s, v; + int h = 0, s, v; v = maxv; if (maxv) s = (maxv - minv) * wxMAX_RGB / maxv; else s = 0; if (s == 0) h = 0; else { - int rc, gc, bc, hex; + int rc, gc, bc, hex = 0; rc = (maxv - r) * wxMAX_RGB / (maxv - minv); gc = (maxv - g) * wxMAX_RGB / (maxv - minv); bc = (maxv - b) * wxMAX_RGB / (maxv - minv); @@ -1109,7 +1156,7 @@ void wxAllocNearestColor(Display *d,Colormap cmp,XColor *xc) wxHSV hsv_defs, hsv; wxXColorToHSV(&hsv,xc); - int diff, min_diff, pixel = 0; + int diff, min_diff = 0, pixel = 0; for(llp = 0;llp < num_colors;llp++) { @@ -1126,8 +1173,11 @@ void wxAllocNearestColor(Display *d,Colormap cmp,XColor *xc) xc -> green = color_defs[pixel].green; xc -> blue = color_defs[pixel].blue; xc -> flags = DoRed | DoGreen | DoBlue; + +/* FIXME, TODO if (!XAllocColor(d,cmp,xc)) cout << "wxAllocNearestColor : Warning : Cannot find nearest color !\n"; +*/ delete[] color_defs; }