Added shared private declarations header privx.h, utils.cpp now shared
between wxMotif and wxX11; added some TODOs to toplevel.cpp, popupwin.cpp git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14172 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -156,6 +156,7 @@ src/generic/descrip.mms
|
||||
src/gtk/descrip.mms
|
||||
src/html/descrip.mms
|
||||
src/motif/descrip.mms
|
||||
src/x11/descrip.mms
|
||||
src/png/scripts/descrip.mms
|
||||
src/unix/descrip.mms
|
||||
src/zlib/descrip.mms
|
||||
|
@@ -1,5 +1,3 @@
|
||||
src/motif.inc
|
||||
|
||||
src/motif/files.lst
|
||||
src/motif/*.cpp
|
||||
src/motif/*.c
|
||||
@@ -12,6 +10,13 @@ src/motif/xmcombo/*.h
|
||||
src/motif/xmcombo/*.doc
|
||||
src/motif/xmcombo/*.man
|
||||
src/motif/xmcombo/*.txt
|
||||
src/x11/files.lst
|
||||
src/x11/*.cpp
|
||||
src/x11/*.c
|
||||
src/x11/*.h
|
||||
src/x11/makefile*
|
||||
src/x11/*.inc
|
||||
src/x11/*.xbm
|
||||
|
||||
src/iodbc/*.c
|
||||
src/iodbc/*.ci
|
||||
@@ -26,8 +31,7 @@ src/iodbc/Changes.log
|
||||
src/iodbc/postgres/*.h
|
||||
|
||||
include/wx/motif/*.h
|
||||
include/install-sh
|
||||
include/wx/install-sh
|
||||
include/wx/x11/*.h
|
||||
|
||||
docs/motif/*.txt
|
||||
docs/motif/makewxmotif
|
||||
|
@@ -18,22 +18,13 @@
|
||||
#include "X11/Xatom.h"
|
||||
#include "X11/Xutil.h"
|
||||
|
||||
// Include common declarations
|
||||
#include "x11/privx.h"
|
||||
|
||||
class wxMouseEvent;
|
||||
class wxKeyEvent;
|
||||
class wxWindow;
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// common callbacks
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
#if 0
|
||||
// All widgets should have this as their resize proc.
|
||||
extern void wxWidgetResizeProc(Widget w, XConfigureEvent *event, String args[], int *num_args);
|
||||
|
||||
// For repainting arbitrary windows
|
||||
void wxUniversalRepaintProc(Widget w, XtPointer WXUNUSED(c_data), XEvent *event, char *);
|
||||
#endif
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// we maintain a hash table which contains the mapping from Widget to wxWindow
|
||||
// corresponding to the window for this widget
|
||||
@@ -44,29 +35,11 @@ extern wxWindow *wxGetWindowFromTable(Window w);
|
||||
extern bool wxAddWindowToTable(Window w, wxWindow *win);
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// key events related functions
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
extern char wxFindMnemonic(const char* s);
|
||||
|
||||
extern char * wxFindAccelerator (const char *s);
|
||||
//extern XmString wxFindAcceleratorText (const char *s);
|
||||
|
||||
extern int wxCharCodeXToWX(KeySym keySym);
|
||||
extern KeySym wxCharCodeWXToX(int id);
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// TranslateXXXEvent() functions - translate Motif event to wxWindow one
|
||||
// TranslateXXXEvent() functions - translate X event to wxWindow one
|
||||
// ----------------------------------------------------------------------------
|
||||
extern bool wxTranslateMouseEvent(wxMouseEvent& wxevent, wxWindow *win, Window window, XEvent *xevent);
|
||||
extern bool wxTranslateKeyEvent(wxKeyEvent& wxevent, wxWindow *win, Window window, XEvent *xevent);
|
||||
|
||||
int wxGetBestMatchingPixel(Display *display, XColor *desiredColor, Colormap cmap);
|
||||
Pixmap XCreateInsensitivePixmap( Display *display, Pixmap pixmap );
|
||||
|
||||
extern XColor g_itemColors[];
|
||||
extern int wxComputeColours (Display *display, wxColour * back, wxColour * fore);
|
||||
|
||||
extern Window wxGetWindowParent(Window window);
|
||||
|
||||
// Set the window manager decorations according to the
|
||||
@@ -74,45 +47,5 @@ extern Window wxGetWindowParent(Window window);
|
||||
bool wxSetWMDecorations(Window w, long style);
|
||||
bool wxMWMIsRunning(Window w);
|
||||
|
||||
// For convenience
|
||||
inline Display* wxGlobalDisplay() { return (Display*) wxGetDisplay(); }
|
||||
|
||||
#define wxNO_COLORS 0x00
|
||||
#define wxBACK_COLORS 0x01
|
||||
#define wxFORE_COLORS 0x02
|
||||
|
||||
extern XColor itemColors[5] ;
|
||||
|
||||
#define wxBACK_INDEX 0
|
||||
#define wxFORE_INDEX 1
|
||||
#define wxSELE_INDEX 2
|
||||
#define wxTOPS_INDEX 3
|
||||
#define wxBOTS_INDEX 4
|
||||
|
||||
#define wxMAX_RGB 0xff
|
||||
#define wxMAX_SV 1000
|
||||
#define wxSIGN(x) ((x < 0) ? -x : x)
|
||||
#define wxH_WEIGHT 4
|
||||
#define wxS_WEIGHT 1
|
||||
#define wxV_WEIGHT 2
|
||||
|
||||
typedef struct wx_hsv {
|
||||
int h,s,v;
|
||||
} wxHSV;
|
||||
|
||||
#define wxMax3(x,y,z) ((x > y) ? ((x > z) ? x : z) : ((y > z) ? y : z))
|
||||
#define wxMin3(x,y,z) ((x < y) ? ((x < z) ? x : z) : ((y < z) ? y : z))
|
||||
|
||||
void wxHSVToXColor(wxHSV *hsv,XColor *xcolor);
|
||||
void wxXColorToHSV(wxHSV *hsv,XColor *xcolor);
|
||||
void wxAllocNearestColor(Display *display,Colormap colormap,XColor *xcolor);
|
||||
void wxAllocColor(Display *display,Colormap colormap,XColor *xcolor);
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// accessors for C modules
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// extern "C" XtAppContext wxGetAppContext();
|
||||
|
||||
#endif
|
||||
// _WX_PRIVATE_H_
|
||||
|
73
include/wx/x11/privx.h
Normal file
73
include/wx/x11/privx.h
Normal file
@@ -0,0 +1,73 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: privx.h
|
||||
// Purpose: Private declarations common to X11 and Motif ports
|
||||
// Author: Julian Smart
|
||||
// Modified by:
|
||||
// Created: 17/09/98
|
||||
// RCS-ID: $Id$
|
||||
// Copyright: (c) Julian Smart
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_H_
|
||||
#define _WX_PRIVATE_H_
|
||||
|
||||
#include "wx/defs.h"
|
||||
#include "wx/utils.h"
|
||||
#include "X11/Xlib.h"
|
||||
#include "X11/Xatom.h"
|
||||
#include "X11/Xutil.h"
|
||||
|
||||
class wxMouseEvent;
|
||||
class wxKeyEvent;
|
||||
class wxWindow;
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// key events related functions
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
extern int wxCharCodeXToWX(KeySym keySym);
|
||||
extern KeySym wxCharCodeWXToX(int id);
|
||||
|
||||
int wxGetBestMatchingPixel(Display *display, XColor *desiredColor, Colormap cmap);
|
||||
Pixmap XCreateInsensitivePixmap( Display *display, Pixmap pixmap );
|
||||
|
||||
extern XColor g_itemColors[];
|
||||
extern int wxComputeColours (Display *display, wxColour * back, wxColour * fore);
|
||||
|
||||
// For convenience
|
||||
inline Display* wxGlobalDisplay() { return (Display*) wxGetDisplay(); }
|
||||
|
||||
#define wxNO_COLORS 0x00
|
||||
#define wxBACK_COLORS 0x01
|
||||
#define wxFORE_COLORS 0x02
|
||||
|
||||
extern XColor itemColors[5] ;
|
||||
|
||||
#define wxBACK_INDEX 0
|
||||
#define wxFORE_INDEX 1
|
||||
#define wxSELE_INDEX 2
|
||||
#define wxTOPS_INDEX 3
|
||||
#define wxBOTS_INDEX 4
|
||||
|
||||
#define wxMAX_RGB 0xff
|
||||
#define wxMAX_SV 1000
|
||||
#define wxSIGN(x) ((x < 0) ? -x : x)
|
||||
#define wxH_WEIGHT 4
|
||||
#define wxS_WEIGHT 1
|
||||
#define wxV_WEIGHT 2
|
||||
|
||||
typedef struct wx_hsv {
|
||||
int h,s,v;
|
||||
} wxHSV;
|
||||
|
||||
#define wxMax3(x,y,z) ((x > y) ? ((x > z) ? x : z) : ((y > z) ? y : z))
|
||||
#define wxMin3(x,y,z) ((x < y) ? ((x < z) ? x : z) : ((y < z) ? y : z))
|
||||
|
||||
void wxHSVToXColor(wxHSV *hsv,XColor *xcolor);
|
||||
void wxXColorToHSV(wxHSV *hsv,XColor *xcolor);
|
||||
void wxAllocNearestColor(Display *display,Colormap colormap,XColor *xcolor);
|
||||
void wxAllocColor(Display *display,Colormap colormap,XColor *xcolor);
|
||||
|
||||
#endif
|
||||
// _WX_PRIVATE_H_
|
1210
src/motif/utils.cpp
1210
src/motif/utils.cpp
File diff suppressed because it is too large
Load Diff
@@ -65,7 +65,10 @@ bool wxPopupWindow::Create( wxWindow *parent, int style )
|
||||
CWBorderPixel | CWBackPixel;
|
||||
xattributes.background_pixel = BlackPixel( xdisplay, xscreen );
|
||||
xattributes.border_pixel = BlackPixel( xdisplay, xscreen );
|
||||
xattributes.override_redirect = False;
|
||||
|
||||
// Trying True in order to stop WM decorating it
|
||||
//xattributes.override_redirect = False;
|
||||
xattributes.override_redirect = TRUE;
|
||||
|
||||
Window xwindow = XCreateWindow( xdisplay, xparent, pos.x, pos.y, size.x, size.y,
|
||||
0, DefaultDepth(xdisplay,xscreen), InputOutput, xvisual, xattributes_mask, &xattributes );
|
||||
@@ -79,7 +82,10 @@ bool wxPopupWindow::Create( wxWindow *parent, int style )
|
||||
m_mainWidget = (WXWindow) xwindow;
|
||||
wxAddWindowToTable( xwindow, (wxWindow*) this );
|
||||
|
||||
XSetTransientForHint( xdisplay, xwindow, xparent );
|
||||
// Probably shouldn't be here for an unmanaged window
|
||||
//XSetTransientForHint( xdisplay, xwindow, xparent );
|
||||
|
||||
// TODO: Will these calls cause decoration??
|
||||
|
||||
size_hints.flags = PSize;
|
||||
size_hints.width = size.x;
|
||||
@@ -91,10 +97,13 @@ bool wxPopupWindow::Create( wxWindow *parent, int style )
|
||||
wm_hints.initial_state = NormalState;
|
||||
XSetWMHints( xdisplay, xwindow, &wm_hints);
|
||||
|
||||
// No decorations for this window
|
||||
#if 0
|
||||
Atom wm_delete_window = XInternAtom( xdisplay, "WM_DELETE_WINDOW", False);
|
||||
XSetWMProtocols( xdisplay, xwindow, &wm_delete_window, 1);
|
||||
|
||||
wxSetWMDecorations((Window) GetMainWindow(), style);
|
||||
#endif
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
@@ -106,6 +106,9 @@ bool wxTopLevelWindowX11::Create(wxWindow *parent,
|
||||
CWBorderPixel | CWBackPixel;
|
||||
xattributes.background_pixel = m_backgroundColour.GetPixel();
|
||||
xattributes.border_pixel = BlackPixel( xdisplay, xscreen );
|
||||
|
||||
// TODO: if we want no border, caption etc.,
|
||||
// I think we set this to True to remove decorations
|
||||
xattributes.override_redirect = False;
|
||||
|
||||
Window xwindow = XCreateWindow( xdisplay, xparent, pos.x, pos.y, size.x, size.y,
|
||||
|
@@ -45,13 +45,24 @@
|
||||
#pragma message disable nosimpint
|
||||
#endif
|
||||
|
||||
#ifdef __WXMOTIF__
|
||||
#include <Xm/Xm.h>
|
||||
#endif
|
||||
|
||||
#ifdef __VMS__
|
||||
#pragma message enable nosimpint
|
||||
#endif
|
||||
|
||||
#include "wx/unix/execute.h"
|
||||
|
||||
#ifdef __WXMOTIF__
|
||||
#include "wx/motif/private.h"
|
||||
#endif
|
||||
|
||||
#ifdef __WXX11__
|
||||
#include "wx/x11/private.h"
|
||||
#endif
|
||||
|
||||
#include "X11/Xresource.h"
|
||||
#include "X11/Xutil.h"
|
||||
|
||||
@@ -83,11 +94,8 @@ void wxFlushEvents()
|
||||
Display *display = (Display*) wxGetDisplay();
|
||||
|
||||
XSync (display, FALSE);
|
||||
XFlush(display);
|
||||
|
||||
// TODO
|
||||
#if 0
|
||||
|
||||
#ifdef __WXMOTIF__
|
||||
// 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.
|
||||
@@ -98,15 +106,17 @@ void wxFlushEvents()
|
||||
XtAppProcessEvent((XtAppContext) wxTheApp->GetAppContext(), XtIMXEvent);
|
||||
}
|
||||
#endif
|
||||
#ifdef __WXX11__
|
||||
// TODO for X11
|
||||
// ??
|
||||
#endif
|
||||
}
|
||||
|
||||
// Check whether this window wants to process messages, e.g. Stop button
|
||||
// in long calculations.
|
||||
bool wxCheckForInterrupt(wxWindow *wnd)
|
||||
{
|
||||
wxASSERT_MSG(FALSE, "wxCheckForInterrupt not yet implemented.");
|
||||
return FALSE;
|
||||
#if 0
|
||||
#ifdef __WXMOTIF__
|
||||
wxCHECK_MSG( wnd, FALSE, "NULL window in wxCheckForInterrupt" );
|
||||
|
||||
Display *dpy=(Display*) wnd->GetXDisplay();
|
||||
@@ -133,13 +143,16 @@ bool wxCheckForInterrupt(wxWindow *wnd)
|
||||
}
|
||||
|
||||
return hadEvents;
|
||||
#else
|
||||
wxASSERT_MSG(FALSE, "wxCheckForInterrupt not yet implemented.");
|
||||
return FALSE;
|
||||
#endif
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxExecute stuff
|
||||
// ----------------------------------------------------------------------------
|
||||
#if 0
|
||||
#ifdef __WXMOTIF__
|
||||
static void xt_notify_end_process(XtPointer data, int *WXUNUSED(fid),
|
||||
XtInputId *id)
|
||||
{
|
||||
@@ -152,11 +165,9 @@ static void xt_notify_end_process(XtPointer data, int *WXUNUSED(fid),
|
||||
|
||||
XtRemoveInput(*id);
|
||||
}
|
||||
#endif
|
||||
|
||||
int wxAddProcessCallback(wxEndProcessData *proc_data, int fd)
|
||||
{
|
||||
#if 0
|
||||
XtInputId id = XtAppAddInput((XtAppContext) wxTheApp->GetAppContext(),
|
||||
fd,
|
||||
(XtPointer *) XtInputReadMask,
|
||||
@@ -164,8 +175,8 @@ int wxAddProcessCallback(wxEndProcessData *proc_data, int fd)
|
||||
(XtPointer) proc_data);
|
||||
|
||||
return (int)id;
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// misc
|
||||
@@ -180,11 +191,25 @@ void wxBell()
|
||||
|
||||
int wxGetOsVersion(int *majorVsn, int *minorVsn)
|
||||
{
|
||||
#ifdef __WXMOTIF__
|
||||
// FIXME TODO
|
||||
// This code is WRONG!! Does NOT return the
|
||||
// Motif version of the libs but the X protocol
|
||||
// version!
|
||||
Display *display = XtDisplay ((Widget) wxTheApp->GetTopLevelWidget());
|
||||
if (majorVsn)
|
||||
*majorVsn = ProtocolVersion (display);
|
||||
if (minorVsn)
|
||||
*minorVsn = ProtocolRevision (display);
|
||||
|
||||
return wxMOTIF_X;
|
||||
#ifdef __WXX11__
|
||||
if (majorVsn)
|
||||
*majorVsn = 0;
|
||||
if (minorVsn)
|
||||
*minorVsn = 0;
|
||||
return wxX11;
|
||||
#endif
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
@@ -595,7 +620,7 @@ void wxClientDisplayRect(int *x, int *y, int *width, int *height)
|
||||
}
|
||||
|
||||
|
||||
// Configurable display in X11
|
||||
// Configurable display in wxX11 and wxMotif
|
||||
static WXDisplay *gs_currentDisplay = NULL;
|
||||
static wxString gs_displayName;
|
||||
|
||||
@@ -603,8 +628,15 @@ WXDisplay *wxGetDisplay()
|
||||
{
|
||||
if (gs_currentDisplay)
|
||||
return gs_currentDisplay;
|
||||
else
|
||||
#ifdef __WXMOTIF__
|
||||
if (wxTheApp && wxTheApp->GetTopLevelWidget())
|
||||
return XtDisplay ((Widget) wxTheApp->GetTopLevelWidget());
|
||||
else if (wxTheApp)
|
||||
return wxTheApp->GetInitialDisplay();
|
||||
#endif
|
||||
#ifdef __WXGTK__
|
||||
return wxApp::GetDisplay();
|
||||
#endif
|
||||
}
|
||||
|
||||
bool wxSetDisplay(const wxString& display_name)
|
||||
@@ -619,6 +651,30 @@ bool wxSetDisplay(const wxString& display_name)
|
||||
}
|
||||
else
|
||||
{
|
||||
#ifdef __WXMOTIF__
|
||||
Cardinal argc = 0;
|
||||
|
||||
Display *display = XtOpenDisplay((XtAppContext) wxTheApp->GetAppContext(),
|
||||
(const char*) display_name,
|
||||
(const char*) wxTheApp->GetAppName(),
|
||||
(const char*) wxTheApp->GetClassName(),
|
||||
NULL,
|
||||
#if XtSpecificationRelease < 5
|
||||
0, &argc,
|
||||
#else
|
||||
0, (int *)&argc,
|
||||
#endif
|
||||
NULL);
|
||||
|
||||
if (display)
|
||||
{
|
||||
gs_currentDisplay = (WXDisplay*) display;
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
return FALSE;
|
||||
#endif
|
||||
#ifdef __WXX11__
|
||||
Display* display = XOpenDisplay((const char*) display_name);
|
||||
|
||||
if (display)
|
||||
@@ -628,6 +684,7 @@ bool wxSetDisplay(const wxString& display_name)
|
||||
}
|
||||
else
|
||||
return FALSE;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
@@ -641,90 +698,6 @@ wxWindow* wxFindWindowAtPoint(const wxPoint& pt)
|
||||
return wxGenericFindWindowAtPoint(pt);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// accelerators
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// Find the letter corresponding to the mnemonic, for Motif
|
||||
char wxFindMnemonic (const char *s)
|
||||
{
|
||||
char mnem = 0;
|
||||
int len = strlen (s);
|
||||
int i;
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
if (s[i] == '&')
|
||||
{
|
||||
// Carefully handle &&
|
||||
if ((i + 1) <= len && s[i + 1] == '&')
|
||||
i++;
|
||||
else
|
||||
{
|
||||
mnem = s[i + 1];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return mnem;
|
||||
}
|
||||
|
||||
char * wxFindAccelerator (const char *s)
|
||||
{
|
||||
// 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++;
|
||||
/*
|
||||
Now we need to format it as X standard:
|
||||
|
||||
input output
|
||||
|
||||
F7 --> <Key>F7
|
||||
Ctrl+N --> Ctrl<Key>N
|
||||
Alt+k --> Meta<Key>k
|
||||
Ctrl+Shift+A --> Ctrl Shift<Key>A
|
||||
|
||||
*/
|
||||
|
||||
wxBuffer[0] = '\0';
|
||||
char *tmp = copystring (s);
|
||||
s = tmp;
|
||||
char *p = tmp;
|
||||
|
||||
while (1)
|
||||
{
|
||||
while (*p && *p != '+')
|
||||
p++;
|
||||
if (*p)
|
||||
{
|
||||
*p = '\0';
|
||||
if (wxBuffer[0])
|
||||
strcat (wxBuffer, " ");
|
||||
if (strcmp (s, "Alt"))
|
||||
strcat (wxBuffer, s);
|
||||
else
|
||||
strcat (wxBuffer, "Meta");
|
||||
s = p++;
|
||||
}
|
||||
else
|
||||
{
|
||||
strcat (wxBuffer, "<Key>");
|
||||
strcat (wxBuffer, s);
|
||||
break;
|
||||
}
|
||||
}
|
||||
delete[]tmp;
|
||||
return wxBuffer;
|
||||
#endif
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// keycode translations
|
||||
// ----------------------------------------------------------------------------
|
||||
@@ -1081,3 +1054,148 @@ void wxAllocColor(Display *d,Colormap cmp,XColor *xc)
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef __WXMOTIF__
|
||||
// ----------------------------------------------------------------------------
|
||||
// accelerators
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// Find the letter corresponding to the mnemonic, for Motif
|
||||
char wxFindMnemonic (const char *s)
|
||||
{
|
||||
char mnem = 0;
|
||||
int len = strlen (s);
|
||||
int i;
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
if (s[i] == '&')
|
||||
{
|
||||
// Carefully handle &&
|
||||
if ((i + 1) <= len && s[i + 1] == '&')
|
||||
i++;
|
||||
else
|
||||
{
|
||||
mnem = s[i + 1];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return mnem;
|
||||
}
|
||||
|
||||
char * wxFindAccelerator (const char *s)
|
||||
{
|
||||
// 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++;
|
||||
/*
|
||||
Now we need to format it as X standard:
|
||||
|
||||
input output
|
||||
|
||||
F7 --> <Key>F7
|
||||
Ctrl+N --> Ctrl<Key>N
|
||||
Alt+k --> Meta<Key>k
|
||||
Ctrl+Shift+A --> Ctrl Shift<Key>A
|
||||
|
||||
*/
|
||||
|
||||
wxBuffer[0] = '\0';
|
||||
char *tmp = copystring (s);
|
||||
s = tmp;
|
||||
char *p = tmp;
|
||||
|
||||
while (1)
|
||||
{
|
||||
while (*p && *p != '+')
|
||||
p++;
|
||||
if (*p)
|
||||
{
|
||||
*p = '\0';
|
||||
if (wxBuffer[0])
|
||||
strcat (wxBuffer, " ");
|
||||
if (strcmp (s, "Alt"))
|
||||
strcat (wxBuffer, s);
|
||||
else
|
||||
strcat (wxBuffer, "Meta");
|
||||
s = p++;
|
||||
}
|
||||
else
|
||||
{
|
||||
strcat (wxBuffer, "<Key>");
|
||||
strcat (wxBuffer, s);
|
||||
break;
|
||||
}
|
||||
}
|
||||
delete[]tmp;
|
||||
return wxBuffer;
|
||||
#endif
|
||||
}
|
||||
|
||||
XmString wxFindAcceleratorText (const char *s)
|
||||
{
|
||||
// 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++;
|
||||
XmString text = XmStringCreateSimple ((char *)s);
|
||||
return text;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
// These functions duplicate those in wxWindow, but are needed
|
||||
// for use outside of wxWindow (e.g. wxMenu, wxMenuBar).
|
||||
|
||||
// Change a widget's foreground and background colours.
|
||||
|
||||
void wxDoChangeForegroundColour(WXWidget widget, wxColour& foregroundColour)
|
||||
{
|
||||
// When should we specify the foreground, if it's calculated
|
||||
// by wxComputeColours?
|
||||
// Solution: say we start with the default (computed) foreground colour.
|
||||
// If we call SetForegroundColour explicitly for a control or window,
|
||||
// then the foreground is changed.
|
||||
// Therefore SetBackgroundColour computes the foreground colour, and
|
||||
// SetForegroundColour changes the foreground colour. The ordering is
|
||||
// important.
|
||||
|
||||
XtVaSetValues ((Widget) widget,
|
||||
XmNforeground, foregroundColour.AllocColour(XtDisplay((Widget) widget)),
|
||||
NULL);
|
||||
}
|
||||
|
||||
void wxDoChangeBackgroundColour(WXWidget widget, wxColour& backgroundColour, bool changeArmColour)
|
||||
{
|
||||
wxComputeColours (XtDisplay((Widget) widget), & backgroundColour,
|
||||
(wxColour*) NULL);
|
||||
|
||||
XtVaSetValues ((Widget) widget,
|
||||
XmNbackground, g_itemColors[wxBACK_INDEX].pixel,
|
||||
XmNtopShadowColor, g_itemColors[wxTOPS_INDEX].pixel,
|
||||
XmNbottomShadowColor, g_itemColors[wxBOTS_INDEX].pixel,
|
||||
XmNforeground, g_itemColors[wxFORE_INDEX].pixel,
|
||||
NULL);
|
||||
|
||||
if (changeArmColour)
|
||||
XtVaSetValues ((Widget) widget,
|
||||
XmNarmColor, g_itemColors[wxSELE_INDEX].pixel,
|
||||
NULL);
|
||||
}
|
||||
|
||||
#endif
|
||||
// __WXMOTIF__
|
||||
|
Reference in New Issue
Block a user