Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
emacs
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
1
Issues
1
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
CI / CD
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
emacs
emacs
Commits
07bf635f
Commit
07bf635f
authored
Jan 18, 1994
by
Richard M. Stallman
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Initial revision
parent
87cd38d6
Changes
16
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
6192 additions
and
0 deletions
+6192
-0
lwlib/Makefile.in
lwlib/Makefile.in
+397
-0
lwlib/dispatch.c
lwlib/dispatch.c
+275
-0
lwlib/lwlib-Xlw.c
lwlib/lwlib-Xlw.c
+178
-0
lwlib/lwlib-Xlw.h
lwlib/lwlib-Xlw.h
+29
-0
lwlib/lwlib-Xm.c
lwlib/lwlib-Xm.c
+1495
-0
lwlib/lwlib-Xm.h
lwlib/lwlib-Xm.h
+34
-0
lwlib/lwlib-Xol.h
lwlib/lwlib-Xol.h
+29
-0
lwlib/lwlib-int.h
lwlib/lwlib-int.h
+54
-0
lwlib/lwlib-utils.c
lwlib/lwlib-utils.c
+162
-0
lwlib/lwlib-utils.h
lwlib/lwlib-utils.h
+20
-0
lwlib/lwlib.c
lwlib/lwlib.c
+1111
-0
lwlib/lwlib.h
lwlib/lwlib.h
+103
-0
lwlib/xlwmenu.c
lwlib/xlwmenu.c
+1265
-0
lwlib/xlwmenu.h
lwlib/xlwmenu.h
+50
-0
src/widget.c
src/widget.c
+900
-0
src/widget.h
src/widget.h
+90
-0
No files found.
lwlib/Makefile.in
0 → 100644
View file @
07bf635f
# Makefile generated by imake - do not edit!
# $XConsortium: imake.c,v 1.51 89/12/12 12:37:30 jim Exp $
#
# The cpp used on this machine replaces all newlines and multiple tabs and
# spaces in a macro expansion with a single space. Imake tries to compensate
# for this, but is not always successful.
#
###########################################################################
# Makefile generated from "Imake.tmpl" and <Imakefile>
# $XConsortium: Imake.tmpl,v 1.77 89/12/18 17:01:37 jim Exp $
#
# Platform-specific parameters may be set in the appropriate .cf
# configuration files. Site-wide parameters may be set in the file
# site.def. Full rebuilds are recommended if any parameters are changed.
#
# If your C preprocessor doesn't define any unique symbols, you'll need
# to set BOOTSTRAPCFLAGS when rebuilding imake (usually when doing
# "make Makefile", "make Makefiles", or "make World").
#
# If you absolutely can't get imake to work, you'll need to set the
# variables at the top of each Makefile as well as the dependencies at the
# bottom (makedepend will do this automatically).
#
###########################################################################
# platform-specific configuration parameters - edit sun.cf to change
# platform: $XConsortium: sun.cf,v 1.38 89/12/23 16:10:10 jim Exp $
# operating system: SunOS 4.0.3
###########################################################################
# site-specific configuration parameters - edit site.def to change
# site: $XConsortium: site.def,v 1.21 89/12/06 11:46:50 jim Exp $
SHELL
=
/bin/sh
TOP
=
.
CURRENT_DIR
=
.
AR
=
ar cq
BOOTSTRAPCFLAGS
=
CC
=
gcc
-DNOSTDHDRS
-fstrength-reduce
-fpcc-struct-return
-fwritable-strings
-traditional
COMPRESS
=
compress
CPP
=
/lib/cpp
$(STD_CPP_DEFINES)
PREPROCESSCMD
=
gcc
-DNOSTDHDRS
-fstrength-reduce
-fpcc-struct-return
-fwritable-strings
-traditional
-E
$(STD_CPP_DEFINES)
INSTALL
=
install
LD
=
ld
LINT
=
lint
LINTLIBFLAG
=
-C
LINTOPTS
=
-axz
LN
=
ln
-s
MAKE
=
make
MV
=
mv
CP
=
cp
RANLIB
=
ranlib
RANLIBINSTFLAGS
=
RM
=
rm
-f
STD_INCLUDES
=
STD_CPP_DEFINES
=
STD_DEFINES
=
EXTRA_LOAD_FLAGS
=
EXTRA_LIBRARIES
=
TAGS
=
ctags
SHAREDCODEDEF
=
-DSHAREDCODE
SHLIBDEF
=
-DSUNSHLIB
PROTO_DEFINES
=
INSTPGMFLAGS
=
INSTBINFLAGS
=
-m
0755
INSTUIDFLAGS
=
-m
4755
INSTLIBFLAGS
=
-m
0664
INSTINCFLAGS
=
-m
0444
INSTMANFLAGS
=
-m
0444
INSTDATFLAGS
=
-m
0444
INSTKMEMFLAGS
=
-m
4755
DESTDIR
=
TOP_INCLUDES
=
-I
$(INCROOT)
CDEBUGFLAGS
=
-O
CCOPTIONS
=
COMPATFLAGS
=
ALLINCLUDES
=
$(STD_INCLUDES)
$(TOP_INCLUDES)
$(INCLUDES)
$(EXTRA_INCLUDES)
ALLDEFINES
=
$(ALLINCLUDES)
$(STD_DEFINES)
$(PROTO_DEFINES)
$(DEFINES)
$(COMPATFLAGS)
CFLAGS
=
$(CDEBUGFLAGS)
$(CCOPTIONS)
$(ALLDEFINES)
LINTFLAGS
=
$(LINTOPTS)
-DLINT
$(ALLDEFINES)
LDLIBS
=
$(SYS_LIBRARIES)
$(EXTRA_LIBRARIES)
LDOPTIONS
=
$(CDEBUGFLAGS)
$(CCOPTIONS)
LDCOMBINEFLAGS
=
-X
-r
MACROFILE
=
sun.cf
RM_CMD
=
$(RM)
*
.CKP
*
.ln
*
.BAK
*
.bak
*
.o core errs ,
*
*
~
*
.a .emacs_
*
tags TAGS make.log MakeOut
IMAKE_DEFINES
=
IRULESRC
=
$(CONFIGDIR)
IMAKE_CMD
=
$(IMAKE)
-DUseInstalled
-I
$(IRULESRC)
$(IMAKE_DEFINES)
ICONFIGFILES
=
$(IRULESRC)
/Imake.tmpl
$(IRULESRC)
/Imake.rules
\
$(IRULESRC)
/Project.tmpl
$(IRULESRC)
/site.def
\
$(IRULESRC)
/
$(MACROFILE)
$(EXTRA_ICONFIGFILES)
###########################################################################
# X Window System Build Parameters
# $XConsortium: Project.tmpl,v 1.63 89/12/18 16:46:44 jim Exp $
###########################################################################
# X Window System make variables; this need to be coordinated with rules
# $XConsortium: Project.tmpl,v 1.63 89/12/18 16:46:44 jim Exp $
PATHSEP
=
/
USRLIBDIR
=
$(DESTDIR)
/usr/lib
BINDIR
=
$(DESTDIR)
/usr/bin/X11
INCROOT
=
$(DESTDIR)
/usr/include
BUILDINCROOT
=
$(TOP)
BUILDINCDIR
=
$(BUILDINCROOT)
/X11
BUILDINCTOP
=
..
INCDIR
=
$(INCROOT)
/X11
ADMDIR
=
$(DESTDIR)
/usr/adm
LIBDIR
=
$(USRLIBDIR)
/X11
CONFIGDIR
=
$(LIBDIR)
/config
LINTLIBDIR
=
$(USRLIBDIR)
/lint
FONTDIR
=
$(LIBDIR)
/fonts
XINITDIR
=
$(LIBDIR)
/xinit
XDMDIR
=
$(LIBDIR)
/xdm
AWMDIR
=
$(LIBDIR)
/awm
TWMDIR
=
$(LIBDIR)
/twm
GWMDIR
=
$(LIBDIR)
/gwm
MANPATH
=
$(DESTDIR)
/usr/man
MANSOURCEPATH
=
$(MANPATH)
/man
MANDIR
=
$(MANSOURCEPATH)
n
LIBMANDIR
=
$(MANSOURCEPATH)
3
XAPPLOADDIR
=
$(LIBDIR)
/app-defaults
SOXLIBREV
=
4.2
SOXTREV
=
4.0
SOXAWREV
=
4.0
SOOLDXREV
=
4.0
SOXMUREV
=
4.0
SOXEXTREV
=
4.0
FONTCFLAGS
=
-t
INSTAPPFLAGS
=
$(INSTDATFLAGS)
IMAKE
=
imake
DEPEND
=
makedepend
RGB
=
rgb
FONTC
=
bdftosnf
MKFONTDIR
=
mkfontdir
MKDIRHIER
=
/bin/sh
$(BINDIR)
/mkdirhier
CONFIGSRC
=
$(TOP)
/config
CLIENTSRC
=
$(TOP)
/clients
DEMOSRC
=
$(TOP)
/demos
LIBSRC
=
$(TOP)
/lib
FONTSRC
=
$(TOP)
/fonts
INCLUDESRC
=
$(TOP)
/X11
SERVERSRC
=
$(TOP)
/server
UTILSRC
=
$(TOP)
/util
SCRIPTSRC
=
$(UTILSRC)
/scripts
EXAMPLESRC
=
$(TOP)
/examples
CONTRIBSRC
=
$(TOP)
/../contrib
DOCSRC
=
$(TOP)
/doc
RGBSRC
=
$(TOP)
/rgb
DEPENDSRC
=
$(UTILSRC)
/makedepend
IMAKESRC
=
$(CONFIGSRC)
XAUTHSRC
=
$(LIBSRC)
/Xau
XLIBSRC
=
$(LIBSRC)
/X
XMUSRC
=
$(LIBSRC)
/Xmu
TOOLKITSRC
=
$(LIBSRC)
/Xt
AWIDGETSRC
=
$(LIBSRC)
/Xaw
OLDXLIBSRC
=
$(LIBSRC)
/oldX
XDMCPLIBSRC
=
$(LIBSRC)
/Xdmcp
BDFTOSNFSRC
=
$(FONTSRC)
/bdftosnf
MKFONTDIRSRC
=
$(FONTSRC)
/mkfontdir
EXTENSIONSRC
=
$(TOP)
/extensions
DEPEXTENSIONLIB
=
$(USRLIBDIR)
/libXext.a
EXTENSIONLIB
=
-lXext
DEPXLIB
=
$(DEPEXTENSIONLIB)
XLIB
=
$(EXTENSIONLIB)
-lX11
DEPXAUTHLIB
=
$(USRLIBDIR)
/libXau.a
XAUTHLIB
=
-lXau
DEPXMULIB
=
XMULIB
=
-lXmu
DEPOLDXLIB
=
OLDXLIB
=
-loldX
DEPXTOOLLIB
=
XTOOLLIB
=
-lXt
DEPXAWLIB
=
XAWLIB
=
-lXaw
LINTEXTENSIONLIB
=
$(USRLIBDIR)
/llib-lXext.ln
LINTXLIB
=
$(USRLIBDIR)
/llib-lX11.ln
LINTXMU
=
$(USRLIBDIR)
/llib-lXmu.ln
LINTXTOOL
=
$(USRLIBDIR)
/llib-lXt.ln
LINTXAW
=
$(USRLIBDIR)
/llib-lXaw.ln
XWLIBSRC
=
$(CONTRIBSRC)
/toolkits/Xw
DEPXWLIB
=
$(USRLIBDIR)
/libXw.a
XWLIB
=
-lXw
DEPLIBS
=
$(DEPXAWLIB)
$(DEPXMULIB)
$(DEPXTOOLLIB)
$(DEPXLIB)
DEPLIBS1
=
$(DEPLIBS)
DEPLIBS2
=
$(DEPLIBS)
DEPLIBS3
=
$(DEPLIBS)
###########################################################################
# Imake rules for building libraries, programs, scripts, and data files
# rules: $XConsortium: Imake.rules,v 1.67 89/12/18 17:14:15 jim Exp $
###########################################################################
# start of Imakefile
# Imakefile file for liblw.a, Copyright (c) 1992-1993 Lucid, Inc.
STD_DEFINES
=
CDEBUGFLAGS
=
-O
EXT_DEFINES
=
-DTHIS_IS_X11R4
WHICH_X
=
x11r4
LUCID_SRCS
=
lwlib-Xlw.c xlwmenu.c
LUCID_OBJS
=
lwlib-Xlw.o xlwmenu.o
MOTIF_SRCS
=
lwlib-Xm.c
MOTIF_OBJS
=
lwlib-Xm.o
OLIT_SRCS
=
lwlib-Xol.c lwlib-Xol-mb.c
OLIT_OBJS
=
lwlib-Xol.o lwlib-Xol-mb.o
TOOLKIT_DEFINES
=
-DUSE_LUCID
TOOLKIT_SRCS
=
$(LUCID_SRC)
TOOLKIT_OBJS
=
$(LUCID_OBJS)
SRCS
=
lwlib.c
$(TOOLKIT_SRCS)
lwlib-utils.c
$(EXT_SRCS)
OBJS
=
lwlib.o
$(TOOLKIT_OBJS)
lwlib-utils.o
$(EXT_OBJS)
$(EZ_OBJS)
EXT_FLAGS
=
-I
$(TOOLKITSRC)
$(EXT_DEFINES)
LIBNAME
=
liblw.a
.c.o
:
$(RM)
$@
$(CC)
-c
$(CFLAGS)
$*
.c
all
::
liblw.a
liblw.a
:
$(OBJS)
$(RM)
$@
$(AR)
$@
$(OBJS)
$(RANLIB)
$@
Makefiles
::
@
case
'
${MFLAGS}
'
in
*
[
ik]
*
)
set
+e
;;
esac
;
\
for
i
in
energize
;
\
do
\
echo
"making Makefiles in
$(CURRENT_DIR)
/
$$
i..."
;
\
case
"
$$
i"
in
\
./?
*
/?
*
/?
*
/?
*
)
newtop
=
../../../../
sub
=
subsubsubsub
;;
\
./?
*
/?
*
/?
*
)
newtop
=
../../../
sub
=
subsubsub
;;
\
./?
*
/?
*
)
newtop
=
../../
sub
=
subsub
;;
\
./?
*
)
newtop
=
../
sub
=
sub
;;
\
*
/?
*
/?
*
/?
*
)
newtop
=
../../../../
sub
=
subsubsubsub
;;
\
*
/?
*
/?
*
)
newtop
=
../../../
sub
=
subsubsub
;;
\
*
/?
*
)
newtop
=
../../
sub
=
subsub
;;
\
*
)
newtop
=
../
sub
=
sub
;;
\
esac
;
\
case
"
$(TOP)
"
in
\
/?
*
)
newtop
=
upprefix
=
;;
\
*
)
upprefix
=
../
;;
\
esac
;
\
$(MAKE)
$
${sub}
dirMakefiles
UPPREFIX
=
$$
upprefix
NEWTOP
=
$$
newtop
\
MAKEFILE_SUBDIR
=
$$
i
NEW_CURRENT_DIR
=
$(CURRENT_DIR)
/
$$
i
;
\
done
subdirMakefiles
:
$(RM)
$(MAKEFILE_SUBDIR)
/Makefile.bak
-
@if
[
-f
$(MAKEFILE_SUBDIR)
/Makefile
]
;
then
\
echo
"
$(MV)
$(MAKEFILE_SUBDIR)
/Makefile
$(MAKEFILE_SUBDIR)
/Makefile.bak"
;
\
$(MV)
$(MAKEFILE_SUBDIR)
/Makefile
$(MAKEFILE_SUBDIR)
/Makefile.bak
;
\
else
exit
0
;
fi
cd
$(MAKEFILE_SUBDIR)
;
$(IMAKE_CMD)
-DTOPDIR
=
$(UPPREFIX)$(TOP)
-DCURDIR
=
$(NEW_CURRENT_DIR)
;
\
$(MAKE)
$(MFLAGS)
Makefiles
subsubdirMakefiles
:
$(RM)
$(MAKEFILE_SUBDIR)
/Makefile.bak
-
@if
[
-f
$(MAKEFILE_SUBDIR)
/Makefile
]
;
then
\
echo
"
$(MV)
$(MAKEFILE_SUBDIR)
/Makefile
$(MAKEFILE_SUBDIR)
/Makefile.bak"
;
\
$(MV)
$(MAKEFILE_SUBDIR)
/Makefile
$(MAKEFILE_SUBDIR)
/Makefile.bak
;
\
else
exit
0
;
fi
cd
$(MAKEFILE_SUBDIR)
;
$(IMAKE_CMD)
-DTOPDIR
=
$(UPPREFIX)$(UPPREFIX)$(TOP)
-DCURDIR
=
$(NEW_CURRENT_DIR)
;
\
$(MAKE)
$(MFLAGS)
Makefiles
subsubsubdirMakefiles
:
$(RM)
$(MAKEFILE_SUBDIR)
/Makefile.bak
-
@if
[
-f
$(MAKEFILE_SUBDIR)
/Makefile
]
;
then
\
echo
"
$(MV)
$(MAKEFILE_SUBDIR)
/Makefile
$(MAKEFILE_SUBDIR)
/Makefile.bak"
;
\
$(MV)
$(MAKEFILE_SUBDIR)
/Makefile
$(MAKEFILE_SUBDIR)
/Makefile.bak
;
\
else
exit
0
;
fi
cd
$(MAKEFILE_SUBDIR)
;
$(IMAKE_CMD)
-DTOPDIR
=
$(UPPREFIX)$(UPPREFIX)$(UPPREFIX)$(TOP)
-DCURDIR
=
$(NEW_CURRENT_DIR)
;
\
$(MAKE)
$(MFLAGS)
Makefiles
subsubsubsubdirMakefiles
:
$(RM)
$(MAKEFILE_SUBDIR)
/Makefile.bak
-
@if
[
-f
$(MAKEFILE_SUBDIR)
/Makefile
]
;
then
\
echo
"
$(MV)
$(MAKEFILE_SUBDIR)
/Makefile
$(MAKEFILE_SUBDIR)
/Makefile.bak"
;
\
$(MV)
$(MAKEFILE_SUBDIR)
/Makefile
$(MAKEFILE_SUBDIR)
/Makefile.bak
;
\
else
exit
0
;
fi
cd
$(MAKEFILE_SUBDIR)
;
$(IMAKE_CMD)
-DTOPDIR
=
$(UPPREFIX)$(UPPREFIX)$(UPPREFIX)$(UPPREFIX)$(TOP)
-DCURDIR
=
$(NEW_CURRENT_DIR)
;
\
$(MAKE)
$(MFLAGS)
Makefiles
depend
::
$(DEPEND)
-s
"# DO NOT DELETE"
--
$(ALLDEFINES)
--
$(SRCS)
CPPDEFS
=
-DCPP_PROGRAM
=
\"
/lib/cpp
\"
lwlib.o
:
lwlib.c
$(RM)
$@
$(CC)
-c
$(CFLAGS)
$(TOOLKIT_DEFINES)
$*
.c
dispatch.o
:
dispatch.c
$(RM)
$@
$(CC)
-c
$(CFLAGS)
$(EXT_FLAGS)
$*
.c
xrdb-cpp.o
:
xrdb-cpp.c
$(RM)
$@
$(CC)
-c
$(CFLAGS)
$(EXT_FLAGS)
"
$(CPPDEFS)
"
$*
.c
xrdb.o
:
xrdb.c
$(RM)
$@
$(CC)
-c
$(CFLAGS)
$(EXT_FLAGS)
$*
.c
lwlib-Xm.o
:
lwlib-Xm.c
$(RM)
$@
$(CC)
-c
$(CFLAGS)
$(ENERGIZEP)
$*
.c
lwlib-utils.o
:
lwlib-utils.h
lwlib.o
:
lwlib.h lwlib-internal.h
lwlib-Xlw.o
:
lwlib.h lwlib-internal.h
lwlib-Xm.o
:
lwlib.h lwlib-internal.h lwlib-utils.h
lwlib-Xol.o
:
lwlib.h lwlib-internal.h
lwlib-Xol-mb.o
:
lwlib-Xol-mb.h lwlib-Xol-mbP.h
###########################################################################
# common rules for all Makefiles - do not edit
emptyrule
::
clean
::
$(RM_CMD)
\#
*
Makefile
::
-
@if
[
-f
Makefile
]
;
then
\
echo
"
$(RM)
Makefile.bak;
$(MV)
Makefile Makefile.bak"
;
\
$(RM)
Makefile.bak
;
$(MV)
Makefile Makefile.bak
;
\
else
exit
0
;
fi
$(IMAKE_CMD)
-DTOPDIR
=
$(TOP)
-DCURDIR
=
$(CURRENT_DIR)
tags
::
$(TAGS)
-w
*
.[ch]
$(TAGS)
-xw
*
.[ch]
>
TAGS
saber
:
#load
$(ALLDEFINES)
$(SRCS)
osaber
:
#load
$(ALLDEFINES)
$(OBJS)
###########################################################################
# empty rules for directories that do not have SUBDIRS - do not edit
install
::
@
echo
"install in
$(CURRENT_DIR)
done"
install.man
::
@
echo
"install.man in
$(CURRENT_DIR)
done"
Makefiles
::
includes
::
###########################################################################
# dependencies generated by makedepend
lwlib/dispatch.c
0 → 100644
View file @
07bf635f
/* Defines a function to find the Widget that XtDispatchEvent() would use.
Copyright (C) 1992 Lucid, Inc.
This file is part of the Lucid Widget Library.
The Lucid Widget Library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 1, or (at your option)
any later version.
The Lucid Widget Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Emacs; see the file COPYING. If not, write to
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
/*
* The function XtWidgetToDispatchTo(), given an XEvent, returns the
* widget that XtDispatchEvent() would send that event to if called now.
* This file copies much code from the X11r4 Xt source, and is thus a
* portability problem. It also requires data structures defined in
* IntrinsicI.h, which is a non-exported Xt header file, so you can't
* compile this file unless you have the Xt sources online.
*/
#include <IntrinsicI.h>
/* Don't change this: see comments in Imakefile. */
#include <X11/Xatom.h>
#include "dispatch.h"
#ifdef THIS_IS_X11R4
#ifdef THIS_IS_X11R5
ERROR
!!
only
one
of
THIS_IS_X11R4
or
THIS_IS_X11R5
must
be
defined
.
#endif
#else
/* ! THIS_IS_X11R4 */
#ifndef THIS_IS_X11R5
ERROR
!!
one
of
THIS_IS_X11R4
or
THIS_IS_X11R5
must
be
defined
.
#endif
#endif
/* ! THIS_IS_X11R4 */
/* ## All of the code on this page was copied from the X11R5 lib/Xt/Event.c,
## but is compatible with X11R4; the code in Event.c is different, but
## functionally equivalent for our purposes.
*/
#if __STDC__
#define Const const
#else
#define Const
/**/
#endif
#define NonMaskableMask ((EventMask)0x80000000L)
#define COMP_EXPOSE (widget->core.widget_class->core_class.compress_exposure)
#define COMP_EXPOSE_TYPE (COMP_EXPOSE & 0x0f)
#define GRAPHICS_EXPOSE ((XtExposeGraphicsExpose & COMP_EXPOSE) || \
(XtExposeGraphicsExposeMerged & COMP_EXPOSE))
#define NO_EXPOSE (XtExposeNoExpose & COMP_EXPOSE)
/* -- lots of stuff we don't need to copy, omitted -- */
static
EventMask
Const
masks
[]
=
{
0
,
/* Error, should never see */
0
,
/* Reply, should never see */
KeyPressMask
,
/* KeyPress */
KeyReleaseMask
,
/* KeyRelease */
ButtonPressMask
,
/* ButtonPress */
ButtonReleaseMask
,
/* ButtonRelease */
PointerMotionMask
/* MotionNotify */
|
ButtonMotionMask
,
EnterWindowMask
,
/* EnterNotify */
LeaveWindowMask
,
/* LeaveNotify */
FocusChangeMask
,
/* FocusIn */
FocusChangeMask
,
/* FocusOut */
KeymapStateMask
,
/* KeymapNotify */
ExposureMask
,
/* Expose */
NonMaskableMask
,
/* GraphicsExpose, in GC */
NonMaskableMask
,
/* NoExpose, in GC */
VisibilityChangeMask
,
/* VisibilityNotify */
SubstructureNotifyMask
,
/* CreateNotify */
StructureNotifyMask
/* DestroyNotify */
|
SubstructureNotifyMask
,
StructureNotifyMask
/* UnmapNotify */
|
SubstructureNotifyMask
,
StructureNotifyMask
/* MapNotify */
|
SubstructureNotifyMask
,
SubstructureRedirectMask
,
/* MapRequest */
StructureNotifyMask
/* ReparentNotify */
|
SubstructureNotifyMask
,
StructureNotifyMask
/* ConfigureNotify */
|
SubstructureNotifyMask
,
SubstructureRedirectMask
,
/* ConfigureRequest */
StructureNotifyMask
/* GravityNotify */
|
SubstructureNotifyMask
,
ResizeRedirectMask
,
/* ResizeRequest */
StructureNotifyMask
/* CirculateNotify */
|
SubstructureNotifyMask
,
SubstructureRedirectMask
,
/* CirculateRequest */
PropertyChangeMask
,
/* PropertyNotify */
NonMaskableMask
,
/* SelectionClear */
NonMaskableMask
,
/* SelectionRequest */
NonMaskableMask
,
/* SelectionNotify */
ColormapChangeMask
,
/* ColormapNotify */
NonMaskableMask
,
/* ClientMessage */
NonMaskableMask
/* MappingNotify */
};
#ifdef THIS_IS_X11R4
static
/* in R5, this is not static, so we don't need to define it at all */
EventMask
_XtConvertTypeToMask
(
eventType
)
int
eventType
;
{
eventType
&=
0x7f
;
/* Events sent with XSendEvent have high bit set. */
if
(
eventType
<
XtNumber
(
masks
))
return
masks
[
eventType
];
else
return
0
;
}
#endif
/* R4 */
/* -- _XtOnGrabList() omitted -- */
static
Widget
LookupSpringLoaded
(
grabList
)
XtGrabList
grabList
;
{
XtGrabList
gl
;
for
(
gl
=
grabList
;
gl
!=
NULL
;
gl
=
gl
->
next
)
{
if
(
gl
->
spring_loaded
)
if
(
XtIsSensitive
(
gl
->
widget
))
return
gl
->
widget
;
else
return
NULL
;
if
(
gl
->
exclusive
)
break
;
}
return
NULL
;
}
/* This function is new. */
static
Boolean
WouldDispatchEvent
(
event
,
widget
,
mask
,
pd
)
register
XEvent
*
event
;
Widget
widget
;
EventMask
mask
;
XtPerDisplay
pd
;
{
XtEventRec
*
p
;
Boolean
would_dispatched
=
False
;
if
((
mask
==
ExposureMask
)
||
((
event
->
type
==
NoExpose
)
&&
NO_EXPOSE
)
||
((
event
->
type
==
GraphicsExpose
)
&&
GRAPHICS_EXPOSE
)
)
if
(
widget
->
core
.
widget_class
->
core_class
.
expose
!=
NULL
)
return
True
;
if
((
mask
==
VisibilityChangeMask
)
&&
XtClass
(
widget
)
->
core_class
.
visible_interest
)
return
True
;
for
(
p
=
widget
->
core
.
event_table
;
p
!=
NULL
;
p
=
p
->
next
)
if
((
mask
&
p
->
mask
)
!=
0
#ifdef THIS_IS_X11R4
||
(
mask
==
0
&&
p
->
non_filter
)
#endif
)
return
True
;
return
False
;
}
/* #### This function is mostly copied from DecideToDispatch().
*/
typedef
enum
_GrabType
{
pass
,
ignore
,
remap
}
GrabType
;
Widget
XtWidgetToDispatchTo
(
XEvent
*
event
)
{
register
Widget
widget
;
EventMask
mask
;
GrabType
grabType
;
Widget
dspWidget
;
Time
time
=
0
;
XtPerDisplay
pd
;
XtPerDisplayInput
pdi
;
XtGrabList
grabList
;
widget
=
XtWindowToWidget
(
event
->
xany
.
display
,
event
->
xany
.
window
);
pd
=
_XtGetPerDisplay
(
event
->
xany
.
display
);
pdi
=
_XtGetPerDisplayInput
(
event
->
xany
.
display
);
grabList
=
*
_XtGetGrabList
(
pdi
);
mask
=
_XtConvertTypeToMask
(
event
->
xany
.
type
);
grabType
=
pass
;
switch
(
event
->
xany
.
type
&
0x7f
)
{
case
KeyPress
:
case
KeyRelease
:
grabType
=
remap
;
break
;
case
ButtonPress
:
case
ButtonRelease
:
grabType
=
remap
;
break
;
case
MotionNotify
:
grabType
=
ignore
;
#define XKnownButtons (Button1MotionMask|Button2MotionMask|Button3MotionMask|\
Button4MotionMask|Button5MotionMask)
mask
|=
(
event
->
xmotion
.
state
&
XKnownButtons
);
#undef XKnownButtons
break
;
case
EnterNotify
:
grabType
=
ignore
;
break
;
}
if
(
widget
==
NULL
)
{
if
(
grabType
!=
remap
)
return
False
;
/* event occurred in a non-widget window, but we've promised also
to dispatch it to the nearest accessible spring_loaded widget */
else
if
((
widget
=
LookupSpringLoaded
(
grabList
))
!=
NULL
)
return
widget
;
return
False
;
}
switch
(
grabType
)
{
case
pass
:
return
widget
;
case
ignore
:
if
((
grabList
==
NULL
||
_XtOnGrabList
(
widget
,
grabList
))