diff options
author | torrey <torrey> | 2003-08-12 23:47:06 +0000 |
---|---|---|
committer | torrey <torrey> | 2003-08-12 23:47:06 +0000 |
commit | cfbb83f9ef36835e69dcd339ecfbc11571338dbd (patch) | |
tree | d70702fbbf5cd5a80258ae22facfd0bf53cb1864 /lib | |
parent | 4f749b91f73c73e1d1439a61d4d5cbd0c186910e (diff) |
Added Apple-WM extension and library (Apple and Torrey T. Lyons).
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Imakefile | 8 | ||||
-rw-r--r-- | lib/apple/AppleWM.man | 59 | ||||
-rw-r--r-- | lib/apple/Imakefile | 37 | ||||
-rw-r--r-- | lib/apple/applewm.c | 527 | ||||
-rw-r--r-- | lib/apple/applewm.h | 158 | ||||
-rw-r--r-- | lib/apple/applewmstr.h | 250 |
6 files changed, 1037 insertions, 2 deletions
diff --git a/lib/Imakefile b/lib/Imakefile index 59afe6e91..233fcd107 100644 --- a/lib/Imakefile +++ b/lib/Imakefile @@ -3,7 +3,7 @@ XCOMM $Xorg: Imakefile,v 1.3 2000/08/17 19:44:00 cpqbld Exp $ -XCOMM $XFree86: xc/lib/Imakefile,v 3.73 2003/01/28 22:07:30 alanh Exp $ +XCOMM $XFree86: xc/lib/Imakefile,v 3.74 2003/04/14 20:37:07 herrb Exp $ #define IHaveSubdirs #define PassCDebugFlags @@ -129,6 +129,10 @@ XCURSORLIBDIR = Xcursor XTRAPLIBDIR = XTrap #endif +#if BuildAppleWMLibrary +APPLELIBDIR = apple +#endif + XF86EXTLIBS = $(XF86MISCLIBDIR) $(XF86VMLIBDIR) \ $(XF86DGALIBDIR) $(XF86RUSHLIBDIR) @@ -204,7 +208,7 @@ LINTSUBDIRS = $(XAULIBDIR) $(XDMCPLIBDIR) $(THRSTUBLIBDIR) $(X11LIBDIR) \ $(ZLIBDIR) $(REGEXDIR) $(RENDERLIBDIR) $(FREETYPE2BUILDDIR) \ $(LIBXML2BUILDDIR) $(EXPATBUILDDIR) $(FONTCONFIGBUILDDIR) \ $(XFT1LIBDIR) $(XFTLIBDIR) $(XVMCLIBDIR) $(RANDRLIBDIR) \ - $(XTRAPLIBDIR) $(XRESLIBDIR) $(XCURSORLIBDIR) + $(XTRAPLIBDIR) $(XRESLIBDIR) $(XCURSORLIBDIR) $(APPLELIBDIR) SUBDIRS = $(BERKDIR) xtrans $(LINTSUBDIRS) $(FONTSUBDIR) $(FONTENCSUBDIR) \ $(FONTCACHELIBDIR) diff --git a/lib/apple/AppleWM.man b/lib/apple/AppleWM.man new file mode 100644 index 000000000..36bd31d03 --- /dev/null +++ b/lib/apple/AppleWM.man @@ -0,0 +1,59 @@ +.\" +.\" $XFree86: xc/lib/Xrandr/Xrandr.man,v 1.6 2003/06/12 14:12:28 eich Exp $ +.\" +.\" Copyright (c) 2002 Apple Computer, Inc. +.\" All Rights Reserved. +.\" +.\" Permission is hereby granted, free of charge, to any person obtaining a +.\" copy of this software and associated documentation files (the +.\" "Software"), to deal in the Software without restriction, including +.\" without limitation the rights to use, copy, modify, merge, publish, +.\" distribute, sub license, and/or sell copies of the Software, and to +.\" permit persons to whom the Software is furnished to do so, subject to +.\" the following conditions: +.\" +.\" The above copyright notice and this permission notice (including the +.\" next paragraph) shall be included in all copies or substantial portions +.\" of the Software. +.\" +.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. +.\" IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR +.\" ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +.\" TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +.\" SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +.\" +.de TQ +.br +.ns +.TP \\$1 +.. +.TH APPLEWM 3 "Version 1.0" "XFree86" + +.SH NAME + AppleWM \- Apple rootless window management extension. +.SH SYNTAX +\&#include <X11/extensions/applewm.h> +.br +\&#include <X11/extensions/applewmstr.h> +.nf +.sp +List of functions will go here. +.fi +.SH ARGUMENTS + +.SH DESCRIPTION +.B AppleWM +is a simple library designed to interface with the Apple-WM extension. +This extension allows X window managers to better interact with +the Mac OS X Aqua user interface when running X11 in a rootless mode. +.PP +A more complete description will be forthcoming eventually. + +.SH FUNCTIONS +Detailed description of functions will go here. + +.SH RESTRICTIONS +.B AppleWM +is only intended to be used on Mac OS X when running a rootless X server. diff --git a/lib/apple/Imakefile b/lib/apple/Imakefile new file mode 100644 index 000000000..a3dabf455 --- /dev/null +++ b/lib/apple/Imakefile @@ -0,0 +1,37 @@ +XCOMM $XFree86: xc/lib/Xrandr/Imakefile,v 1.2 2002/10/02 16:55:41 keithp Exp $ + + +#define DoNormalLib NormalLibAppleWM +#define DoSharedLib SharedLibAppleWM +#define DoDebugLib DebugLibAppleWM +#define DoProfileLib ProfileLibAppleWM +#define LibName AppleWM +#define SoRev SOAPPLEWMREV +#define IncSubdir X11 +#define IncSubSubdir extensions + +#include <Threads.tmpl> + +#ifdef SharedAppleWMReqs +REQUIREDLIBS = SharedAppleWMReqs +#endif + +#if Malloc0ReturnsNull +ALLOC_DEFINES = -DMALLOC_0_RETURNS_NULL +#endif + + DEFINES = $(ALLOC_DEFINES) + INCLUDES = -I$(XLIBSRC) -I$(EXTINCSRC) + SRCS = applewm.c + OBJS = applewm.o + LINTLIBS = $(LINTXLIB) + +HEADERS = applewm.h applewmstr.h + +#include <Library.tmpl> + +MANSUFFIX = $(LIBMANSUFFIX) + +InstallManPage(AppleWM,$(LIBMANDIR)) + +DependTarget() diff --git a/lib/apple/applewm.c b/lib/apple/applewm.c new file mode 100644 index 000000000..6a1142f90 --- /dev/null +++ b/lib/apple/applewm.c @@ -0,0 +1,527 @@ +/* $XFree86: xc/lib/GL/dri/XF86dri.c,v 1.12 2001/08/27 17:40:57 dawes Exp $ */ +/************************************************************************** + +Copyright (c) 2002 Apple Computer, Inc. +All Rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sub license, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice (including the +next paragraph) shall be included in all copies or substantial portions +of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. +IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR +ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +**************************************************************************/ + +/* THIS IS NOT AN X CONSORTIUM STANDARD */ + +#define NEED_EVENTS +#define NEED_REPLIES +#include <X11/Xlibint.h> +#include "applewmstr.h" +#include <X11/extensions/Xext.h> +#include "extutil.h" +#include <stdio.h> + +static XExtensionInfo _applewm_info_data; +static XExtensionInfo *applewm_info = &_applewm_info_data; +static char *applewm_extension_name = APPLEWMNAME; + +#define AppleWMCheckExtension(dpy,i,val) \ + XextCheckExtension (dpy, i, applewm_extension_name, val) + +/***************************************************************************** + * * + * private utility routines * + * * + *****************************************************************************/ + +static int close_display(Display *dpy, XExtCodes *extCodes); +static Bool wire_to_event(); +static Status event_to_wire(); + +static /* const */ XExtensionHooks applewm_extension_hooks = { + NULL, /* create_gc */ + NULL, /* copy_gc */ + NULL, /* flush_gc */ + NULL, /* free_gc */ + NULL, /* create_font */ + NULL, /* free_font */ + close_display, /* close_display */ + wire_to_event, /* wire_to_event */ + event_to_wire, /* event_to_wire */ + NULL, /* error */ + NULL, /* error_string */ +}; + +static XEXT_GENERATE_FIND_DISPLAY (find_display, applewm_info, + applewm_extension_name, + &applewm_extension_hooks, + AppleWMNumberEvents, NULL) + +static XEXT_GENERATE_CLOSE_DISPLAY (close_display, applewm_info) + +static Bool wire_to_event (dpy, re, event) + Display *dpy; + XEvent *re; + xEvent *event; +{ + XExtDisplayInfo *info = find_display (dpy); + XAppleWMNotifyEvent *se; + xAppleWMNotifyEvent *sevent; + + AppleWMCheckExtension (dpy, info, False); + + switch ((event->u.u.type & 0x7f) - info->codes->first_event) { + case AppleWMControllerNotify: + case AppleWMActivationNotify: + case AppleWMPasteboardNotify: + se = (XAppleWMNotifyEvent *) re; + sevent = (xAppleWMNotifyEvent *) event; + se->type = sevent->type & 0x7f; + se->serial = _XSetLastRequestRead(dpy,(xGenericReply *) event); + se->send_event = (sevent->type & 0x80) != 0; + se->display = dpy; + se->window = 0; + se->time = sevent->time; + se->kind = sevent->kind; + se->arg = sevent->arg; + return True; + } + return False; +} + +static Status event_to_wire (dpy, re, event) + Display *dpy; + XEvent *re; + xEvent *event; +{ + XExtDisplayInfo *info = find_display (dpy); + XAppleWMNotifyEvent *se; + xAppleWMNotifyEvent *sevent; + + AppleWMCheckExtension (dpy, info, False); + + switch ((re->type & 0x7f) - info->codes->first_event) { + case AppleWMControllerNotify: + case AppleWMActivationNotify: + case AppleWMPasteboardNotify: + se = (XAppleWMNotifyEvent *) re; + sevent = (xAppleWMNotifyEvent *) event; + sevent->type = se->type | (se->send_event ? 0x80 : 0); + sevent->sequenceNumber = se->serial & 0xffff; + sevent->kind = se->kind; + sevent->arg = se->arg; + sevent->time = se->time; + return 1; + } + return 0; +} + +/***************************************************************************** + * * + * public Apple-WM Extension routines * + * * + *****************************************************************************/ + +#if 0 +#include <stdio.h> +#define TRACE(msg) fprintf(stderr, "AppleWM%s\n", msg); +#else +#define TRACE(msg) +#endif + + +Bool XAppleWMQueryExtension (dpy, event_basep, error_basep) + Display *dpy; + int *event_basep, *error_basep; +{ + XExtDisplayInfo *info = find_display (dpy); + + TRACE("QueryExtension..."); + if (XextHasExtension(info)) { + *event_basep = info->codes->first_event; + *error_basep = info->codes->first_error; + TRACE("QueryExtension... return True"); + return True; + } else { + TRACE("QueryExtension... return False"); + return False; + } +} + +Bool XAppleWMQueryVersion(dpy, majorVersion, minorVersion, patchVersion) + Display* dpy; + int* majorVersion; + int* minorVersion; + int* patchVersion; +{ + XExtDisplayInfo *info = find_display (dpy); + xAppleWMQueryVersionReply rep; + xAppleWMQueryVersionReq *req; + + TRACE("QueryVersion..."); + AppleWMCheckExtension (dpy, info, False); + + LockDisplay(dpy); + GetReq(AppleWMQueryVersion, req); + req->reqType = info->codes->major_opcode; + req->wmReqType = X_AppleWMQueryVersion; + if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) { + UnlockDisplay(dpy); + SyncHandle(); + TRACE("QueryVersion... return False"); + return False; + } + *majorVersion = rep.majorVersion; + *minorVersion = rep.minorVersion; + *patchVersion = rep.patchVersion; + UnlockDisplay(dpy); + SyncHandle(); + TRACE("QueryVersion... return True"); + return True; +} + +Bool XAppleWMDisableUpdate(dpy, screen) + Display* dpy; + int screen; +{ + XExtDisplayInfo *info = find_display (dpy); + xAppleWMDisableUpdateReq *req; + + TRACE("DisableUpdate..."); + AppleWMCheckExtension (dpy, info, False); + + LockDisplay(dpy); + GetReq(AppleWMDisableUpdate, req); + req->reqType = info->codes->major_opcode; + req->wmReqType = X_AppleWMDisableUpdate; + req->screen = screen; + UnlockDisplay(dpy); + SyncHandle(); + TRACE("DisableUpdate... return True"); + return True; +} + +Bool XAppleWMReenableUpdate(dpy, screen) + Display* dpy; + int screen; +{ + XExtDisplayInfo *info = find_display (dpy); + xAppleWMReenableUpdateReq *req; + + TRACE("ReenableUpdate..."); + AppleWMCheckExtension (dpy, info, False); + + LockDisplay(dpy); + GetReq(AppleWMReenableUpdate, req); + req->reqType = info->codes->major_opcode; + req->wmReqType = X_AppleWMReenableUpdate; + req->screen = screen; + UnlockDisplay(dpy); + SyncHandle(); + TRACE("ReenableUpdate... return True"); + return True; +} + +Bool XAppleWMSelectInput(dpy, mask) + Display* dpy; + unsigned long mask; +{ + XExtDisplayInfo *info = find_display (dpy); + xAppleWMSelectInputReq *req; + + TRACE("SelectInput..."); + AppleWMCheckExtension (dpy, info, False); + + LockDisplay(dpy); + GetReq(AppleWMSelectInput, req); + req->reqType = info->codes->major_opcode; + req->wmReqType = X_AppleWMSelectInput; + req->mask = mask; + UnlockDisplay(dpy); + SyncHandle(); + TRACE("SetlectInput... return True"); + return True; +} + +Bool XAppleWMSetWindowMenuWithShortcuts(dpy, nitems, items, shortcuts) + Display* dpy; + int nitems; + const char **items; + const char *shortcuts; +{ + XExtDisplayInfo *info = find_display (dpy); + xAppleWMSetWindowMenuReq *req; + int i, total_length, len; + char *buf, *ptr; + + TRACE("SetWindowMenu..."); + AppleWMCheckExtension (dpy, info, False); + + LockDisplay(dpy); + GetReq(AppleWMSetWindowMenu, req); + req->reqType = info->codes->major_opcode; + req->wmReqType = X_AppleWMSetWindowMenu; + req->nitems = nitems; + + total_length = 0; + for (i = 0; i < nitems; i++) + total_length += strlen (items[i]) + 2; + + ptr = buf = alloca (total_length); + for (i = 0; i < nitems; i++) + { + len = strlen (items[i]); + *ptr++ = shortcuts ? shortcuts[i] : 0; + memcpy (ptr, items[i], len); + ptr[len] = 0; + ptr += len + 1; + } + + req->length += (total_length + 3) >> 2; + Data (dpy, buf, total_length); + + UnlockDisplay(dpy); + SyncHandle(); + TRACE("SetlectInput... return True"); + return True; +} + +Bool XAppleWMSetWindowMenu(dpy, nitems, items) + Display* dpy; + int nitems; + const char **items; +{ + return XAppleWMSetWindowMenuWithShortcuts (dpy, nitems, items, NULL); +} + +Bool XAppleWMSetWindowMenuCheck(dpy, idx) + Display* dpy; + int idx; +{ + XExtDisplayInfo *info = find_display (dpy); + xAppleWMSetWindowMenuCheckReq *req; + + TRACE("SetWindowMenuCheck..."); + AppleWMCheckExtension (dpy, info, False); + + LockDisplay(dpy); + GetReq(AppleWMSetWindowMenuCheck, req); + req->reqType = info->codes->major_opcode; + req->wmReqType = X_AppleWMSetWindowMenuCheck; + req->index = idx; + UnlockDisplay(dpy); + SyncHandle(); + TRACE("SetWindowMenuCheck... return True"); + return True; +} + +Bool XAppleWMSetFrontProcess(dpy) + Display* dpy; +{ + XExtDisplayInfo *info = find_display (dpy); + xAppleWMSetFrontProcessReq *req; + + TRACE("SetFrontProcess..."); + AppleWMCheckExtension (dpy, info, False); + + LockDisplay(dpy); + GetReq(AppleWMSetFrontProcess, req); + req->reqType = info->codes->major_opcode; + req->wmReqType = X_AppleWMSetFrontProcess; + UnlockDisplay(dpy); + SyncHandle(); + TRACE("SetFrontProcess... return True"); + return True; +} + +Bool XAppleWMSetWindowLevel(dpy, id, level) + Display* dpy; + Window id; + int level; +{ + XExtDisplayInfo *info = find_display (dpy); + xAppleWMSetWindowLevelReq *req; + + TRACE("SetWindowLevel..."); + AppleWMCheckExtension (dpy, info, False); + + LockDisplay(dpy); + GetReq(AppleWMSetWindowLevel, req); + req->reqType = info->codes->major_opcode; + req->wmReqType = X_AppleWMSetWindowLevel; + req->window = id; + req->level = level; + UnlockDisplay(dpy); + SyncHandle(); + TRACE("SetWindowLevel... return True"); + return True; +} + +Bool XAppleWMSetCanQuit(dpy, state) + Display* dpy; + Bool state; +{ + XExtDisplayInfo *info = find_display (dpy); + xAppleWMSetCanQuitReq *req; + + TRACE("SetCanQuit..."); + AppleWMCheckExtension (dpy, info, False); + + LockDisplay(dpy); + GetReq(AppleWMSetCanQuit, req); + req->reqType = info->codes->major_opcode; + req->wmReqType = X_AppleWMSetCanQuit; + req->state = state; + UnlockDisplay(dpy); + SyncHandle(); + TRACE("SetCanQuit... return True"); + return True; +} + +Bool XAppleWMFrameGetRect(dpy, frame_class, frame_rect, + ix, iy, iw, ih, ox, oy, ow, oh, rx, ry, rw, rh) + Display* dpy; + unsigned int frame_class, frame_rect; + short ix, iy, iw, ih; + short ox, oy, ow, oh; + short *rx, *ry, *rw, *rh; +{ + XExtDisplayInfo *info = find_display (dpy); + xAppleWMFrameGetRectReply rep; + xAppleWMFrameGetRectReq *req; + + TRACE("FrameGetRect..."); + AppleWMCheckExtension (dpy, info, False); + + LockDisplay(dpy); + GetReq(AppleWMFrameGetRect, req); + req->reqType = info->codes->major_opcode; + req->wmReqType = X_AppleWMFrameGetRect; + req->frame_class = frame_class; + req->frame_rect = frame_rect; + req->ix = ix; + req->iy = iy; + req->iw = iw; + req->ih = ih; + req->ox = ox; + req->oy = oy; + req->ow = ow; + req->oh = oh; + rep.x = rep.y = rep.w = rep.h = 0; + if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) { + UnlockDisplay(dpy); + SyncHandle(); + TRACE("FrameGetRect... return False"); + return False; + } + *rx = rep.x; *ry = rep.y; + *rw = rep.w; *rh = rep.h; + UnlockDisplay(dpy); + SyncHandle(); + TRACE("FrameGetRect... return True"); + return True; +} + +unsigned int XAppleWMFrameHitTest(dpy, frame_class, px, py, + ix, iy, iw, ih, ox, oy, ow, oh) + Display* dpy; + unsigned int frame_class; + short px, py; + short ix, iy, iw, ih; + short ox, oy, ow, oh; +{ + XExtDisplayInfo *info = find_display (dpy); + xAppleWMFrameHitTestReply rep; + xAppleWMFrameHitTestReq *req; + + TRACE("FrameHitTest..."); + AppleWMCheckExtension (dpy, info, False); + + LockDisplay(dpy); + GetReq(AppleWMFrameHitTest, req); + req->reqType = info->codes->major_opcode; + req->wmReqType = X_AppleWMFrameHitTest; + req->frame_class = frame_class; + req->px = px; + req->py = py; + req->ix = ix; + req->iy = iy; + req->iw = iw; + req->ih = ih; + req->ox = ox; + req->oy = oy; + req->ow = ow; + req->oh = oh; + rep.ret = 0; + if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) { + UnlockDisplay(dpy); + SyncHandle(); + TRACE("FrameHitTest... return False"); + return False; + } + UnlockDisplay(dpy); + SyncHandle(); + TRACE("FrameHiTest... return True"); + return rep.ret; +} + +Bool XAppleWMFrameDraw(dpy, screen, window, + frame_class, frame_attr, + ix, iy, iw, ih, ox, oy, ow, oh, + title_length, title_bytes) + Display* dpy; + int screen; + Window window; + unsigned int frame_class, frame_attr; + short ix, iy, iw, ih; + short ox, oy, ow, oh; + unsigned int title_length; + const unsigned char *title_bytes; +{ + XExtDisplayInfo *info = find_display (dpy); + xAppleWMFrameDrawReq *req; + + TRACE("FrameDraw..."); + AppleWMCheckExtension (dpy, info, False); + + LockDisplay(dpy); + GetReq(AppleWMFrameDraw, req); + req->reqType = info->codes->major_opcode; + req->wmReqType = X_AppleWMFrameDraw; + req->screen = screen; + req->window = window; + req->frame_class = frame_class; + req->frame_attr = frame_attr; + req->ix = ix; + req->iy = iy; + req->iw = iw; + req->ih = ih; + req->ox = ox; + req->oy = oy; + req->ow = ow; + req->oh = oh; + req->title_length = title_length; + + req->length += (title_length + 3)>>2; + Data (dpy, title_bytes, title_length); + + UnlockDisplay(dpy); + SyncHandle(); + TRACE("FrameDraw... return True"); + return True; +} diff --git a/lib/apple/applewm.h b/lib/apple/applewm.h new file mode 100644 index 000000000..f3580138e --- /dev/null +++ b/lib/apple/applewm.h @@ -0,0 +1,158 @@ +/* $XFree86: xc/lib/GL/dri/xf86dri.h,v 1.7 2000/12/07 20:26:02 dawes Exp $ */ +/************************************************************************** + +Copyright (c) 2002 Apple Computer, Inc. +All Rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sub license, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice (including the +next paragraph) shall be included in all copies or substantial portions +of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. +IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR +ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +**************************************************************************/ + +#ifndef _APPLEWM_H_ +#define _APPLEWM_H_ + +#include <X11/Xfuncproto.h> + +#define X_AppleWMQueryVersion 0 +#define X_AppleWMFrameGetRect 1 +#define X_AppleWMFrameHitTest 2 +#define X_AppleWMFrameDraw 3 +#define X_AppleWMDisableUpdate 4 +#define X_AppleWMReenableUpdate 5 +#define X_AppleWMSelectInput 6 +#define X_AppleWMSetWindowMenuCheck 7 +#define X_AppleWMSetFrontProcess 8 +#define X_AppleWMSetWindowLevel 9 +#define X_AppleWMSetCanQuit 10 +#define X_AppleWMSetWindowMenu 11 + +/* Events */ +#define AppleWMControllerNotify 0 +#define AppleWMActivationNotify 1 +#define AppleWMPasteboardNotify 2 +#define AppleWMNumberEvents 3 + +#define AppleWMControllerNotifyMask (1L << 0) +#define AppleWMActivationNotifyMask (1L << 1) +#define AppleWMPasteboardNotifyMask (1L << 2) + +/* "Kinds" of ControllerNotify events */ +#define AppleWMMinimizeWindow 0 +#define AppleWMZoomWindow 1 +#define AppleWMCloseWindow 2 +#define AppleWMBringAllToFront 3 +#define AppleWMHideWindow 4 +#define AppleWMHideAll 5 +#define AppleWMShowAll 6 +#define AppleWMWindowMenuItem 9 +#define AppleWMWindowMenuNotify 10 +#define AppleWMNextWindow 11 +#define AppleWMPreviousWindow 12 + +/* "Kinds" of ActivationNotify events */ +#define AppleWMIsActive 0 +#define AppleWMIsInactive 1 + +/* "Kinds" of PasteboardNotify events */ +#define AppleWMCopyToPasteboard 0 + +/* Errors */ +#define AppleWMClientNotLocal 0 +#define AppleWMOperationNotSupported 1 +#define AppleWMNumberErrors (AppleWMOperationNotSupported + 1) + +/* Window level ids */ +#define AppleWMWindowLevelNormal 0 +#define AppleWMWindowLevelFloating 1 +#define AppleWMWindowLevelTornOff 2 +#define AppleWMWindowLevelDock 3 +#define AppleWMWindowLevelDesktop 4 +#define AppleWMNumWindowLevels 5 + +#ifndef _APPLEWM_SERVER_ + +typedef struct { + int type; /* of event */ + unsigned long serial; /* # of last request processed by server */ + Bool send_event; /* true if this came frome a SendEvent request */ + Display *display; /* Display the event was read from */ + Window window; /* window of event */ + Time time; /* server timestamp when event happened */ + int kind; /* subtype of event */ + int arg; +} XAppleWMNotifyEvent; + +_XFUNCPROTOBEGIN + +Bool XAppleWMQueryExtension (Display *dpy, int *event_base, int *error_base); + +Bool XAppleWMQueryVersion (Display *dpy, int *majorVersion, + int *minorVersion, int *patchVersion); + +Bool XAppleWMDisableUpdate (Display *dpy, int screen); + +Bool XAppleWMReenableUpdate (Display *dpy, int screen); + +Bool XAppleWMSelectInput (Display *dpy, unsigned long mask); + +Bool XAppleWMSetWindowMenu (Display *dpy, int nitems, const char **items); +Bool XAppleWMSetWindowMenuWithShortcuts (Display *dpy, int nitems, + const char **items, + const char *shortcuts); + +Bool XAppleWMSetWindowMenuCheck (Display *dpy, int index); + +Bool XAppleWMSetFrontProcess (Display *dpy); + +Bool XAppleWMSetWindowLevel (Display *dpy, Window id, int level); + +Bool XAppleWMSetCanQuit (Display *dpy, Bool state); + +Bool XAppleWMFrameGetRect (Display *dpy, + unsigned int frame_class, unsigned int frame_rect, + short inner_x, short inner_y, + short inner_w, short inner_h, + short outer_x, short outer_y, + short outer_w, short outer_h, + short *ret_x, short *ret_y, + short *ret_w, short *ret_h); + +unsigned int XAppleWMFrameHitTest (Display *dpy, + unsigned int frame_class, + short point_x, short point_y, + short inner_x, short inner_y, + short inner_w, short inner_h, + short outer_x, short outer_y, + short outer_w, short outer_h); + +Bool XAppleWMFrameDraw (Display *dpy, int screen, Window window, + unsigned int frame_class, unsigned int frame_attr, + short inner_x, short inner_y, + short inner_w, short inner_h, + short outer_x, short outer_y, + short outer_w, short outer_h, + unsigned int title_length, + const unsigned char * title_bytes); + +_XFUNCPROTOEND + +#endif /* _APPLEWM_SERVER_ */ +#endif /* _APPLEWM_H_ */ diff --git a/lib/apple/applewmstr.h b/lib/apple/applewmstr.h new file mode 100644 index 000000000..f0c027ac5 --- /dev/null +++ b/lib/apple/applewmstr.h @@ -0,0 +1,250 @@ +/* $XFree86: xc/lib/GL/dri/xf86dristr.h,v 1.9 2001/03/21 16:01:08 dawes Exp $ */ +/************************************************************************** + +Copyright (c) 2002 Apple Computer, Inc. +All Rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sub license, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice (including the +next paragraph) shall be included in all copies or substantial portions +of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. +IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR +ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +**************************************************************************/ + +#ifndef _APPLEWMSTR_H_ +#define _APPLEWMSTR_H_ + +#include <X11/extensions/applewm.h> +#include <X11/X.h> +#include <X11/Xmd.h> + +#define APPLEWMNAME "Apple-WM" + +#define APPLE_WM_MAJOR_VERSION 1 /* current version numbers */ +#define APPLE_WM_MINOR_VERSION 0 +#define APPLE_WM_PATCH_VERSION 0 + +typedef struct _AppleWMQueryVersion { + CARD8 reqType; /* always WMReqCode */ + CARD8 wmReqType; /* always X_WMQueryVersion */ + CARD16 length B16; +} xAppleWMQueryVersionReq; +#define sz_xAppleWMQueryVersionReq 4 + +typedef struct { + BYTE type; /* X_Reply */ + BOOL pad1; + CARD16 sequenceNumber B16; + CARD32 length B32; + CARD16 majorVersion B16; /* major version of WM protocol */ + CARD16 minorVersion B16; /* minor version of WM protocol */ + CARD32 patchVersion B32; /* patch version of WM protocol */ + CARD32 pad3 B32; + CARD32 pad4 B32; + CARD32 pad5 B32; + CARD32 pad6 B32; +} xAppleWMQueryVersionReply; +#define sz_xAppleWMQueryVersionReply 32 + +typedef struct _AppleWMDisableUpdate { + CARD8 reqType; /* always WMReqCode */ + CARD8 wmReqType; /* always X_WMDisableUpdate */ + CARD16 length B16; + CARD32 screen B32; +} xAppleWMDisableUpdateReq; +#define sz_xAppleWMDisableUpdateReq 8 + +typedef struct _AppleWMReenableUpdate { + CARD8 reqType; /* always WMReqCode */ + CARD8 wmReqType; /* always X_WMReenableUpdate */ + CARD16 length B16; + CARD32 screen B32; +} xAppleWMReenableUpdateReq; +#define sz_xAppleWMReenableUpdateReq 8 + +typedef struct _AppleWMSelectInput { + CARD8 reqType; /* always WMReqCode */ + CARD8 wmReqType; /* always X_WMSelectInput */ + CARD16 length B16; + CARD32 mask B32; +} xAppleWMSelectInputReq; +#define sz_xAppleWMSelectInputReq 8 + +typedef struct _AppleWMNotify { + BYTE type; /* always eventBase + event type */ + BYTE kind; + CARD16 sequenceNumber B16; + Time time B32; /* time of change */ + CARD16 pad1 B16; + CARD32 arg B32; + CARD32 pad3 B32; +} xAppleWMNotifyEvent; +#define sz_xAppleWMNotifyEvent 20 + +typedef struct _AppleWMSetWindowMenu { + CARD8 reqType; /* always WMReqCode */ + CARD8 wmReqType; /* always X_WMSetWindowMenu */ + CARD16 length B16; + CARD16 nitems B16; + CARD16 pad1 B16; +} xAppleWMSetWindowMenuReq; +#define sz_xAppleWMSetWindowMenuReq 8 + +typedef struct _AppleWMSetWindowMenuCheck { + CARD8 reqType; /* always WMReqCode */ + CARD8 wmReqType; /* always X_WMSetWindowMenuCheck */ + CARD16 length B16; + CARD32 index; +} xAppleWMSetWindowMenuCheckReq; +#define sz_xAppleWMSetWindowMenuCheckReq 8 + +typedef struct _AppleWMSetFrontProcess { + CARD8 reqType; /* always WMReqCode */ + CARD8 wmReqType; /* always X_WMSetFrontProcess */ + CARD16 length B16; +} xAppleWMSetFrontProcessReq; +#define sz_xAppleWMSetFrontProcessReq 4 + +typedef struct _AppleWMSetWindowLevel { + CARD8 reqType; /* always WMReqCode */ + CARD8 wmReqType; /* always X_WMSetWindowLevel */ + CARD16 length B16; + CARD32 window; + CARD32 level; +} xAppleWMSetWindowLevelReq; +#define sz_xAppleWMSetWindowLevelReq 12 + +typedef struct _AppleWMSetCanQuit { + CARD8 reqType; /* always WMReqCode */ + CARD8 wmReqType; /* always X_WMSetCanQuit */ + CARD16 length B16; + CARD32 state; +} xAppleWMSetCanQuitReq; +#define sz_xAppleWMSetCanQuitReq 8 + +typedef struct _AppleWMFrameGetRect { + CARD8 reqType; /* always WMReqCode */ + CARD8 wmReqType; /* always X_WMFrameGetRect */ + CARD16 length B16; + CARD16 frame_class B16; + CARD16 frame_rect B16; + CARD16 ix B16; + CARD16 iy B16; + CARD16 iw B16; + CARD16 ih B16; + CARD16 ox B16; + CARD16 oy B16; + CARD16 ow B16; + CARD16 oh B16; +} xAppleWMFrameGetRectReq; +#define sz_xAppleWMFrameGetRectReq 24 + +typedef struct { + BYTE type; /* X_Reply */ + BOOL pad1; + CARD16 sequenceNumber B16; + CARD32 length B32; + CARD16 x B16; + CARD16 y B16; + CARD16 w B16; + CARD16 h B16; + CARD32 pad3 B32; + CARD32 pad4 B32; + CARD32 pad5 B32; + CARD32 pad6 B32; +} xAppleWMFrameGetRectReply; +#define sz_xAppleWMFrameGetRectReply 32 + +typedef struct _AppleWMFrameHitTest { + CARD8 reqType; /* always WMReqCode */ + CARD8 wmReqType; /* always X_WMFrameHitTest */ + CARD16 length B16; + CARD16 frame_class B16; + CARD16 pad1 B16; + CARD16 px B16; + CARD16 py B16; + CARD16 ix B16; + CARD16 iy B16; + CARD16 iw B16; + CARD16 ih B16; + CARD16 ox B16; + CARD16 oy B16; + CARD16 ow B16; + CARD16 oh B16; +} xAppleWMFrameHitTestReq; +#define sz_xAppleWMFrameHitTestReq 28 + +typedef struct { + BYTE type; /* X_Reply */ + BOOL pad1; + CARD16 sequenceNumber B16; + CARD32 length B32; + CARD32 ret B32; + CARD32 pad2 B32; + CARD32 pad3 B32; + CARD32 pad4 B32; + CARD32 pad5 B32; + CARD32 pad6 B32; +} xAppleWMFrameHitTestReply; +#define sz_xAppleWMFrameHitTestReply 32 + +typedef struct _AppleWMFrameDraw { + CARD8 reqType; /* always WMReqCode */ + CARD8 wmReqType; /* always X_WMFrameDraw */ + CARD16 length B16; + CARD32 screen B32; + CARD32 window B32; + CARD16 frame_class B16; + CARD16 frame_attr B16; + CARD16 ix B16; + CARD16 iy B16; + CARD16 iw B16; + CARD16 ih B16; + CARD16 ox B16; + CARD16 oy B16; + CARD16 ow B16; + CARD16 oh B16; + CARD32 title_length B32; +} xAppleWMFrameDrawReq; +#define sz_xAppleWMFrameDrawReq 36 + +#ifdef _APPLEWM_SERVER_ + +void AppleWMExtensionInit( +#if NeedFunctionPrototypes + void +#endif +); + +void AppleWMSendEvent ( +#if NeedFunctionPrototypes + int /* type */, + unsigned int /* mask */, + int /* which */, + int /* arg */ +#endif +); + +unsigned int AppleWMSelectedEvents ( +#if NeedFunctionPrototypes + void +#endif +); + +#endif /* _APPLEWM_SERVER_ */ +#endif /* _APPLEWMSTR_H_ */ |