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