Functions.c revision 444c061a
1444c061aSmrg/* $Xorg: Functions.c,v 1.4 2001/02/09 02:03:54 xorgcvs Exp $ */
2444c061aSmrg
3444c061aSmrg/*
4444c061aSmrg
5444c061aSmrgCopyright 1993 by Sun Microsystems, Inc. Mountain View, CA.
6444c061aSmrg
7444c061aSmrgPermission to use, copy, modify, and distribute this software and its
8444c061aSmrgdocumentation for any purpose and without fee is hereby granted,
9444c061aSmrgprovided that the above copyright notice appear in all copies and that
10444c061aSmrgboth that copyright notice and this permission notice appear in
11444c061aSmrgsupporting documentation, and that the name Sun not be
12444c061aSmrgused in advertising or publicity pertaining to distribution of the
13444c061aSmrgsoftware without specific, written prior permission.
14444c061aSmrg
15444c061aSmrgSUN DISCLAIMS ALL WARRANTIES WITH REGARD TO  THIS  SOFTWARE,
16444c061aSmrgINCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
17444c061aSmrgNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE  LI-
18444c061aSmrgABLE  FOR  ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
19444c061aSmrgANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,  DATA  OR
20444c061aSmrgPROFITS,  WHETHER  IN  AN  ACTION OF CONTRACT, NEGLIGENCE OR
21444c061aSmrgOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION  WITH
22444c061aSmrgTHE USE OR PERFORMANCE OF THIS SOFTWARE.
23444c061aSmrg
24444c061aSmrg*/
25444c061aSmrg
26444c061aSmrg/*
27444c061aSmrg
28444c061aSmrgCopyright 1985, 1986, 1987, 1988, 1989, 1994, 1998  The Open Group
29444c061aSmrg
30444c061aSmrgPermission to use, copy, modify, distribute, and sell this software and its
31444c061aSmrgdocumentation for any purpose is hereby granted without fee, provided that
32444c061aSmrgthe above copyright notice appear in all copies and that both that
33444c061aSmrgcopyright notice and this permission notice appear in supporting
34444c061aSmrgdocumentation.
35444c061aSmrg
36444c061aSmrgThe above copyright notice and this permission notice shall be included in
37444c061aSmrgall copies or substantial portions of the Software.
38444c061aSmrg
39444c061aSmrgTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
40444c061aSmrgIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
41444c061aSmrgFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
42444c061aSmrgOPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
43444c061aSmrgAN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
44444c061aSmrgCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
45444c061aSmrg
46444c061aSmrgExcept as contained in this notice, the name of The Open Group shall not be
47444c061aSmrgused in advertising or otherwise to promote the sale, use or other dealings
48444c061aSmrgin this Software without prior written authorization from The Open Group.
49444c061aSmrg
50444c061aSmrg*/
51444c061aSmrg
52444c061aSmrg#ifdef HAVE_CONFIG_H
53444c061aSmrg#include <config.h>
54444c061aSmrg#endif
55444c061aSmrg#include "IntrinsicI.h"
56444c061aSmrg#include <X11/Shell.h>
57444c061aSmrg#include <X11/Vendor.h>
58444c061aSmrg
59444c061aSmrg/*
60444c061aSmrg * This file defines functional equivalents to all macros defined
61444c061aSmrg * in Intrinsic.h
62444c061aSmrg *
63444c061aSmrg */
64444c061aSmrg
65444c061aSmrg#undef XtIsRectObj
66444c061aSmrgBoolean XtIsRectObj(Widget object)
67444c061aSmrg{
68444c061aSmrg    return _XtCheckSubclassFlag(object, 0x02);
69444c061aSmrg}
70444c061aSmrg
71444c061aSmrg
72444c061aSmrg#undef XtIsWidget
73444c061aSmrgBoolean XtIsWidget(Widget object)
74444c061aSmrg{
75444c061aSmrg    return _XtCheckSubclassFlag(object, 0x04);
76444c061aSmrg}
77444c061aSmrg
78444c061aSmrg
79444c061aSmrg#undef XtIsComposite
80444c061aSmrgBoolean XtIsComposite(Widget object)
81444c061aSmrg{
82444c061aSmrg    return _XtCheckSubclassFlag(object, 0x08);
83444c061aSmrg}
84444c061aSmrg
85444c061aSmrg
86444c061aSmrg#undef XtIsConstraint
87444c061aSmrgBoolean XtIsConstraint(Widget object)
88444c061aSmrg{
89444c061aSmrg    return _XtCheckSubclassFlag(object, 0x10);
90444c061aSmrg}
91444c061aSmrg
92444c061aSmrg
93444c061aSmrg#undef XtIsShell
94444c061aSmrgBoolean XtIsShell(Widget object)
95444c061aSmrg{
96444c061aSmrg    return _XtCheckSubclassFlag(object, 0x20);
97444c061aSmrg}
98444c061aSmrg
99444c061aSmrg
100444c061aSmrg#undef XtIsOverrideShell
101444c061aSmrgBoolean XtIsOverrideShell(Widget object)
102444c061aSmrg{
103444c061aSmrg    return _XtIsSubclassOf(object, (WidgetClass)overrideShellWidgetClass,
104444c061aSmrg			   (WidgetClass)shellWidgetClass, 0x20);
105444c061aSmrg}
106444c061aSmrg
107444c061aSmrg
108444c061aSmrg#undef XtIsWMShell
109444c061aSmrgBoolean XtIsWMShell(Widget object)
110444c061aSmrg{
111444c061aSmrg    return _XtCheckSubclassFlag(object, 0x40);
112444c061aSmrg}
113444c061aSmrg
114444c061aSmrg
115444c061aSmrg#undef XtIsVendorShell
116444c061aSmrgBoolean XtIsVendorShell(Widget object)
117444c061aSmrg{
118444c061aSmrg    Boolean retval;
119444c061aSmrg
120444c061aSmrg    LOCK_PROCESS;
121444c061aSmrg    retval = _XtIsSubclassOf(object,
122444c061aSmrg#ifdef notdef
123444c061aSmrg/*
124444c061aSmrg * We don't refer to vendorShell directly, because some shared libraries
125444c061aSmrg * bind local references tightly.
126444c061aSmrg */
127444c061aSmrg			   (WidgetClass)vendorShellWidgetClass,
128444c061aSmrg#endif
129444c061aSmrg			   transientShellWidgetClass->core_class.superclass,
130444c061aSmrg			   (WidgetClass)wmShellWidgetClass, 0x40);
131444c061aSmrg    UNLOCK_PROCESS;
132444c061aSmrg    return retval;
133444c061aSmrg}
134444c061aSmrg
135444c061aSmrg
136444c061aSmrg#undef XtIsTransientShell
137444c061aSmrgBoolean XtIsTransientShell(Widget object)
138444c061aSmrg{
139444c061aSmrg    return _XtIsSubclassOf(object, (WidgetClass)transientShellWidgetClass,
140444c061aSmrg			   (WidgetClass)wmShellWidgetClass, 0x40);
141444c061aSmrg}
142444c061aSmrg
143444c061aSmrg
144444c061aSmrg#undef XtIsTopLevelShell
145444c061aSmrgBoolean XtIsTopLevelShell(Widget object)
146444c061aSmrg{
147444c061aSmrg    return _XtCheckSubclassFlag(object, 0x80);
148444c061aSmrg}
149444c061aSmrg
150444c061aSmrg
151444c061aSmrg#undef XtIsApplicationShell
152444c061aSmrgBoolean XtIsApplicationShell(Widget object)
153444c061aSmrg{
154444c061aSmrg    return _XtIsSubclassOf(object, (WidgetClass)applicationShellWidgetClass,
155444c061aSmrg			   (WidgetClass)topLevelShellWidgetClass, 0x80);
156444c061aSmrg}
157444c061aSmrg
158444c061aSmrg#undef XtIsSessionShell
159444c061aSmrgBoolean XtIsSessionShell(Widget object)
160444c061aSmrg{
161444c061aSmrg    return _XtIsSubclassOf(object, (WidgetClass)sessionShellWidgetClass,
162444c061aSmrg			   (WidgetClass)topLevelShellWidgetClass, 0x80);
163444c061aSmrg}
164444c061aSmrg
165444c061aSmrg#undef XtMapWidget
166444c061aSmrgvoid XtMapWidget(Widget w)
167444c061aSmrg{
168444c061aSmrg    Widget hookobj;
169444c061aSmrg    WIDGET_TO_APPCON(w);
170444c061aSmrg
171444c061aSmrg    LOCK_APP(app);
172444c061aSmrg    XMapWindow(XtDisplay(w), XtWindow(w));
173444c061aSmrg    hookobj = XtHooksOfDisplay(XtDisplay(w));
174444c061aSmrg    if (XtHasCallbacks(hookobj, XtNchangeHook) == XtCallbackHasSome) {
175444c061aSmrg	XtChangeHookDataRec call_data;
176444c061aSmrg
177444c061aSmrg	call_data.type = XtHmapWidget;
178444c061aSmrg	call_data.widget = w;
179444c061aSmrg	XtCallCallbackList(hookobj,
180444c061aSmrg		((HookObject)hookobj)->hooks.changehook_callbacks,
181444c061aSmrg		(XtPointer)&call_data);
182444c061aSmrg    }
183444c061aSmrg    UNLOCK_APP(app);
184444c061aSmrg}
185444c061aSmrg
186444c061aSmrg
187444c061aSmrg#undef XtUnmapWidget
188444c061aSmrgvoid XtUnmapWidget(Widget w)
189444c061aSmrg{
190444c061aSmrg    Widget hookobj;
191444c061aSmrg    WIDGET_TO_APPCON(w);
192444c061aSmrg
193444c061aSmrg    LOCK_APP(app);
194444c061aSmrg    XUnmapWindow(XtDisplay(w), XtWindow(w));
195444c061aSmrg    hookobj = XtHooksOfDisplay(XtDisplay(w));
196444c061aSmrg    if (XtHasCallbacks(hookobj, XtNchangeHook) == XtCallbackHasSome) {
197444c061aSmrg	XtChangeHookDataRec call_data;
198444c061aSmrg
199444c061aSmrg	call_data.type = XtHunmapWidget;
200444c061aSmrg	call_data.widget = w;
201444c061aSmrg	XtCallCallbackList(hookobj,
202444c061aSmrg		((HookObject)hookobj)->hooks.changehook_callbacks,
203444c061aSmrg		(XtPointer)&call_data);
204444c061aSmrg    }
205444c061aSmrg    UNLOCK_APP(app);
206444c061aSmrg}
207444c061aSmrg
208444c061aSmrg
209444c061aSmrg#undef XtNewString
210444c061aSmrgString XtNewString(String str)
211444c061aSmrg{
212444c061aSmrg    if (str == NULL)
213444c061aSmrg	return NULL;
214444c061aSmrg    else
215444c061aSmrg	return strcpy(__XtMalloc((unsigned)strlen(str) + 1), str);
216444c061aSmrg}
217