projects
/
wxWidgets.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Lots of OS/2 fixes mostly to do with painting
[wxWidgets.git]
/
src
/
motif
/
utils.cpp
diff --git
a/src/motif/utils.cpp
b/src/motif/utils.cpp
index e981f6e89daca5df03293110dfb91c3de1bab64d..bbd87c87726df34a0aac9f36bd2dfb0fd54ba380 100644
(file)
--- a/
src/motif/utils.cpp
+++ b/
src/motif/utils.cpp
@@
-17,11
+17,16
@@
// headers
// ----------------------------------------------------------------------------
// headers
// ----------------------------------------------------------------------------
+#ifdef __VMS
+#define XtDisplay XTDISPLAY
+#endif
+
#include "wx/setup.h"
#include "wx/utils.h"
#include "wx/app.h"
#include "wx/msgdlg.h"
#include "wx/cursor.h"
#include "wx/setup.h"
#include "wx/utils.h"
#include "wx/app.h"
#include "wx/msgdlg.h"
#include "wx/cursor.h"
+#include "wx/window.h" // for wxTopLevelWindows
#include <ctype.h>
#include <stdarg.h>
#include <ctype.h>
#include <stdarg.h>
@@
-40,7
+45,15
@@
#include <sysent.h>
#endif
#include <sysent.h>
#endif
+#ifdef __VMS__
+#pragma message disable nosimpint
+#endif
#include <Xm/Xm.h>
#include <Xm/Xm.h>
+#ifdef __VMS__
+#pragma message enable nosimpint
+#endif
+
+#include "wx/unix/execute.h"
#include "wx/motif/private.h"
#include "wx/motif/private.h"
@@
-58,8
+71,6
@@
static char *GetIniFile (char *dest, const char *filename);
static char *GetIniFile (char *dest, const char *filename);
-extern wxList wxTopLevelWindows;
-
// ============================================================================
// implementation
// ============================================================================
// ============================================================================
// implementation
// ============================================================================
@@
-74,7
+85,7
@@
void wxFlushEvents()
Display *display = (Display*) wxGetDisplay();
XSync (display, FALSE);
Display *display = (Display*) wxGetDisplay();
XSync (display, FALSE);
- XEvent event;
+
// XtAppPending returns availability of events AND timers/inputs, which
// are processed via callbacks, so XtAppNextEvent will not return if
// there are no events. So added '& XtIMXEvent' - Sergey.
// XtAppPending returns availability of events AND timers/inputs, which
// are processed via callbacks, so XtAppNextEvent will not return if
// there are no events. So added '& XtIMXEvent' - Sergey.
@@
-122,7
+133,7
@@
bool wxCheckForInterrupt(wxWindow *wnd)
// wxExecute stuff
// ----------------------------------------------------------------------------
// wxExecute stuff
// ----------------------------------------------------------------------------
-static void xt_notify_end_process(XtPointer
client, int *fid
,
+static void xt_notify_end_process(XtPointer
data, int *WXUNUSED(fid)
,
XtInputId *id)
{
wxEndProcessData *proc_data = (wxEndProcessData *)data;
XtInputId *id)
{
wxEndProcessData *proc_data = (wxEndProcessData *)data;
@@
-141,7
+152,7
@@
int wxAddProcessCallback(wxEndProcessData *proc_data, int fd)
fd,
(XtPointer *) XtInputReadMask,
(XtInputCallbackProc) xt_notify_end_process,
fd,
(XtPointer *) XtInputReadMask,
(XtInputCallbackProc) xt_notify_end_process,
- (XtPointer) proc
ess
_data);
+ (XtPointer) proc_data);
return (int)id;
}
return (int)id;
}
@@
-461,11
+472,9
@@
void wxXMergeDatabases (wxApp * theApp, Display * display)
size_t len;
environment = GetIniFile (filename, NULL);
len = strlen (environment);
size_t len;
environment = GetIniFile (filename, NULL);
len = strlen (environment);
-#if defined(__SOLARIS__) || defined(__SVR4__) && !defined(__HPUX__)
- (void) sysinfo (SI_HOSTNAME, environment + len, 1024 - len);
-#else
- (void) gethostname (environment + len, 1024 - len);
-#endif
+ wxString hostname = wxGetHostName();
+ if ( !!hostname )
+ strncat(environment, hostname, 1024 - len);
}
homeDB = XrmGetFileDatabase (environment);
XrmMergeDatabases (homeDB, &wxResourceDatabase);
}
homeDB = XrmGetFileDatabase (environment);
XrmMergeDatabases (homeDB, &wxResourceDatabase);
@@
-542,8
+551,8
@@
wxXSetBusyCursor (wxWindow * win, wxCursor * cursor)
else
{
// Restore old cursor
else
{
// Restore old cursor
- if (win->GetCursor()
->
Ok())
- attrs.cursor = (Cursor) win->GetCursor()
->
GetXCursor(display);
+ if (win->GetCursor()
.
Ok())
+ attrs.cursor = (Cursor) win->GetCursor()
.
GetXCursor(display);
else
attrs.cursor = None;
}
else
attrs.cursor = None;
}
@@
-639,6
+648,16
@@
void wxDisplaySize(int *width, int *height)
*height = DisplayHeight (dpy, DefaultScreen (dpy));
}
*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));
+}
+
// Configurable display in Motif
static WXDisplay *gs_currentDisplay = NULL;
static wxString gs_displayName;
// Configurable display in Motif
static WXDisplay *gs_currentDisplay = NULL;
static wxString gs_displayName;
@@
-690,8
+709,6
@@
bool wxSetDisplay(const wxString& display_name)
else
return FALSE;
}
else
return FALSE;
}
-
- return FALSE;
}
wxString wxGetDisplayName()
}
wxString wxGetDisplayName()
@@
-699,6
+716,11
@@
wxString wxGetDisplayName()
return gs_displayName;
}
return gs_displayName;
}
+wxWindow* wxFindWindowAtPoint(const wxPoint& pt)
+{
+ return wxGenericFindWindowAtPoint(pt);
+}
+
// ----------------------------------------------------------------------------
// accelerators
// ----------------------------------------------------------------------------
// ----------------------------------------------------------------------------
// accelerators
// ----------------------------------------------------------------------------
@@
-726,9
+748,14
@@
char wxFindMnemonic (const char *s)
return mnem;
}
return mnem;
}
-char * wxFindAccelerator (char *s)
+char * wxFindAccelerator (c
onst c
har *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')
while (*s && *s != '\t')
s++;
if (*s == '\0')
@@
-749,7
+776,7
@@
char * wxFindAccelerator (char *s)
wxBuffer[0] = '\0';
char *tmp = copystring (s);
s = tmp;
wxBuffer[0] = '\0';
char *tmp = copystring (s);
s = tmp;
- char *p =
s
;
+ char *p =
tmp
;
while (1)
{
while (1)
{
@@
-764,8
+791,7
@@
char * wxFindAccelerator (char *s)
strcat (wxBuffer, s);
else
strcat (wxBuffer, "Meta");
strcat (wxBuffer, s);
else
strcat (wxBuffer, "Meta");
- s = p + 1;
- p = s;
+ s = p++;
}
else
{
}
else
{
@@
-776,18
+802,25
@@
char * wxFindAccelerator (char *s)
}
delete[]tmp;
return wxBuffer;
}
delete[]tmp;
return wxBuffer;
+#endif
}
}
-XmString wxFindAcceleratorText (char *s)
+XmString wxFindAcceleratorText (c
onst c
har *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')
return (NULL);
s++;
while (*s && *s != '\t')
s++;
if (*s == '\0')
return (NULL);
s++;
- XmString text = XmStringCreateSimple (s);
+ XmString text = XmStringCreateSimple (
(char *)
s);
return text;
return text;
+#endif
}
// ----------------------------------------------------------------------------
}
// ----------------------------------------------------------------------------
@@
-1042,7
+1075,7
@@
void wxHSVToXColor(wxHSV *hsv,XColor *rgb)
int h = hsv->h;
int s = hsv->s;
int v = hsv->v;
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;
int i, f;
int p, q, t;
s = (s * wxMAX_RGB) / wxMAX_SV;
@@
-1075,14
+1108,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 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
{
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);
rc = (maxv - r) * wxMAX_RGB / (maxv - minv);
gc = (maxv - g) * wxMAX_RGB / (maxv - minv);
bc = (maxv - b) * wxMAX_RGB / (maxv - minv);
@@
-1111,7
+1144,7
@@
void wxAllocNearestColor(Display *d,Colormap cmp,XColor *xc)
wxHSV hsv_defs, hsv;
wxXColorToHSV(&hsv,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++)
{
for(llp = 0;llp < num_colors;llp++)
{
@@
-1128,8
+1161,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;
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";
if (!XAllocColor(d,cmp,xc))
cout << "wxAllocNearestColor : Warning : Cannot find nearest color !\n";
+*/
delete[] color_defs;
}
delete[] color_defs;
}