|
Carlos Lopez |
a09598 |
/* $XFree86: xc/lib/GL/dri/XF86dri.c,v 1.12 2001/08/27 17:40:57 dawes Exp $ */
|
|
Carlos Lopez |
a09598 |
/**************************************************************************
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
|
|
Carlos Lopez |
a09598 |
Copyright 2000 VA Linux Systems, Inc.
|
|
Carlos Lopez |
a09598 |
Copyright (c) 2002 Apple Computer, Inc.
|
|
Carlos Lopez |
a09598 |
All Rights Reserved.
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
Permission is hereby granted, free of charge, to any person obtaining a
|
|
Carlos Lopez |
a09598 |
copy of this software and associated documentation files (the
|
|
Carlos Lopez |
a09598 |
"Software"), to deal in the Software without restriction, including
|
|
Carlos Lopez |
a09598 |
without limitation the rights to use, copy, modify, merge, publish,
|
|
Carlos Lopez |
a09598 |
distribute, sub license, and/or sell copies of the Software, and to
|
|
Carlos Lopez |
a09598 |
permit persons to whom the Software is furnished to do so, subject to
|
|
Carlos Lopez |
a09598 |
the following conditions:
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
The above copyright notice and this permission notice (including the
|
|
Carlos Lopez |
a09598 |
next paragraph) shall be included in all copies or substantial portions
|
|
Carlos Lopez |
a09598 |
of the Software.
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
|
Carlos Lopez |
a09598 |
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
Carlos Lopez |
a09598 |
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
|
|
Carlos Lopez |
a09598 |
IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
|
|
Carlos Lopez |
a09598 |
ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
|
Carlos Lopez |
a09598 |
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
Carlos Lopez |
a09598 |
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
**************************************************************************/
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
/* THIS IS NOT AN X CONSORTIUM STANDARD */
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
#define NEED_EVENTS
|
|
Carlos Lopez |
a09598 |
#define NEED_REPLIES
|
|
Carlos Lopez |
a09598 |
#include <x11 xlibint.h=""></x11>
|
|
Carlos Lopez |
a09598 |
#include "applewmstr.h"
|
|
Carlos Lopez |
a09598 |
#include <x11 extensions="" xext.h=""></x11>
|
|
Carlos Lopez |
a09598 |
#include "extutil.h"
|
|
Carlos Lopez |
a09598 |
#include <stdio.h></stdio.h>
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
static XExtensionInfo _applewm_info_data;
|
|
Carlos Lopez |
a09598 |
static XExtensionInfo *applewm_info = &_applewm_info_data;
|
|
Carlos Lopez |
a09598 |
static char *applewm_extension_name = APPLEWMNAME;
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
#define AppleWMCheckExtension(dpy,i,val) \
|
|
Carlos Lopez |
a09598 |
XextCheckExtension (dpy, i, applewm_extension_name, val)
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
/*****************************************************************************
|
|
Carlos Lopez |
a09598 |
* *
|
|
Carlos Lopez |
a09598 |
* private utility routines *
|
|
Carlos Lopez |
a09598 |
* *
|
|
Carlos Lopez |
a09598 |
*****************************************************************************/
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
static int close_display(Display *dpy, XExtCodes *extCodes);
|
|
Carlos Lopez |
a09598 |
static Bool wire_to_event();
|
|
Carlos Lopez |
a09598 |
static Status event_to_wire();
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
static /* const */ XExtensionHooks applewm_extension_hooks = {
|
|
Carlos Lopez |
a09598 |
NULL, /* create_gc */
|
|
Carlos Lopez |
a09598 |
NULL, /* copy_gc */
|
|
Carlos Lopez |
a09598 |
NULL, /* flush_gc */
|
|
Carlos Lopez |
a09598 |
NULL, /* free_gc */
|
|
Carlos Lopez |
a09598 |
NULL, /* create_font */
|
|
Carlos Lopez |
a09598 |
NULL, /* free_font */
|
|
Carlos Lopez |
a09598 |
close_display, /* close_display */
|
|
Carlos Lopez |
a09598 |
wire_to_event, /* wire_to_event */
|
|
Carlos Lopez |
a09598 |
event_to_wire, /* event_to_wire */
|
|
Carlos Lopez |
a09598 |
NULL, /* error */
|
|
Carlos Lopez |
a09598 |
NULL, /* error_string */
|
|
Carlos Lopez |
a09598 |
};
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
static XEXT_GENERATE_FIND_DISPLAY (find_display, applewm_info,
|
|
Carlos Lopez |
a09598 |
applewm_extension_name,
|
|
Carlos Lopez |
a09598 |
&applewm_extension_hooks,
|
|
Carlos Lopez |
a09598 |
AppleWMNumberEvents, NULL)
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
static XEXT_GENERATE_CLOSE_DISPLAY (close_display, applewm_info)
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
static Bool wire_to_event (dpy, re, event)
|
|
Carlos Lopez |
a09598 |
Display *dpy;
|
|
Carlos Lopez |
a09598 |
XEvent *re;
|
|
Carlos Lopez |
a09598 |
xEvent *event;
|
|
Carlos Lopez |
a09598 |
{
|
|
Carlos Lopez |
a09598 |
XExtDisplayInfo *info = find_display (dpy);
|
|
Carlos Lopez |
a09598 |
XAppleWMNotifyEvent *se;
|
|
Carlos Lopez |
a09598 |
xAppleWMNotifyEvent *sevent;
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
AppleWMCheckExtension (dpy, info, False);
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
switch ((event->u.u.type & 0x7f) - info->codes->first_event) {
|
|
Carlos Lopez |
a09598 |
case AppleWMControllerNotify:
|
|
Carlos Lopez |
a09598 |
case AppleWMActivationNotify:
|
|
Carlos Lopez |
a09598 |
case AppleWMPasteboardNotify:
|
|
Carlos Lopez |
a09598 |
se = (XAppleWMNotifyEvent *) re;
|
|
Carlos Lopez |
a09598 |
sevent = (xAppleWMNotifyEvent *) event;
|
|
Carlos Lopez |
a09598 |
se->type = sevent->type & 0x7f;
|
|
Carlos Lopez |
a09598 |
se->serial = _XSetLastRequestRead(dpy,(xGenericReply *) event);
|
|
Carlos Lopez |
a09598 |
se->send_event = (sevent->type & 0x80) != 0;
|
|
Carlos Lopez |
a09598 |
se->display = dpy;
|
|
Carlos Lopez |
a09598 |
se->window = 0;
|
|
Carlos Lopez |
a09598 |
se->time = sevent->time;
|
|
Carlos Lopez |
a09598 |
se->kind = sevent->kind;
|
|
Carlos Lopez |
a09598 |
se->arg = sevent->arg;
|
|
Carlos Lopez |
a09598 |
return True;
|
|
Carlos Lopez |
a09598 |
}
|
|
Carlos Lopez |
a09598 |
return False;
|
|
Carlos Lopez |
a09598 |
}
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
static Status event_to_wire (dpy, re, event)
|
|
Carlos Lopez |
a09598 |
Display *dpy;
|
|
Carlos Lopez |
a09598 |
XEvent *re;
|
|
Carlos Lopez |
a09598 |
xEvent *event;
|
|
Carlos Lopez |
a09598 |
{
|
|
Carlos Lopez |
a09598 |
XExtDisplayInfo *info = find_display (dpy);
|
|
Carlos Lopez |
a09598 |
XAppleWMNotifyEvent *se;
|
|
Carlos Lopez |
a09598 |
xAppleWMNotifyEvent *sevent;
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
AppleWMCheckExtension (dpy, info, False);
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
switch ((re->type & 0x7f) - info->codes->first_event) {
|
|
Carlos Lopez |
a09598 |
case AppleWMControllerNotify:
|
|
Carlos Lopez |
a09598 |
case AppleWMActivationNotify:
|
|
Carlos Lopez |
a09598 |
case AppleWMPasteboardNotify:
|
|
Carlos Lopez |
a09598 |
se = (XAppleWMNotifyEvent *) re;
|
|
Carlos Lopez |
a09598 |
sevent = (xAppleWMNotifyEvent *) event;
|
|
Carlos Lopez |
a09598 |
sevent->type = se->type | (se->send_event ? 0x80 : 0);
|
|
Carlos Lopez |
a09598 |
sevent->sequenceNumber = se->serial & 0xffff;
|
|
Carlos Lopez |
a09598 |
sevent->kind = se->kind;
|
|
Carlos Lopez |
a09598 |
sevent->arg = se->arg;
|
|
Carlos Lopez |
a09598 |
sevent->time = se->time;
|
|
Carlos Lopez |
a09598 |
return 1;
|
|
Carlos Lopez |
a09598 |
}
|
|
Carlos Lopez |
a09598 |
return 0;
|
|
Carlos Lopez |
a09598 |
}
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
/*****************************************************************************
|
|
Carlos Lopez |
a09598 |
* *
|
|
Carlos Lopez |
a09598 |
* public Apple-WM Extension routines *
|
|
Carlos Lopez |
a09598 |
* *
|
|
Carlos Lopez |
a09598 |
*****************************************************************************/
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
#if 0
|
|
Carlos Lopez |
a09598 |
#include <stdio.h></stdio.h>
|
|
Carlos Lopez |
a09598 |
#define TRACE(msg) fprintf(stderr, "AppleWM%s\n", msg);
|
|
Carlos Lopez |
a09598 |
#else
|
|
Carlos Lopez |
a09598 |
#define TRACE(msg)
|
|
Carlos Lopez |
a09598 |
#endif
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
Bool XAppleWMQueryExtension (dpy, event_basep, error_basep)
|
|
Carlos Lopez |
a09598 |
Display *dpy;
|
|
Carlos Lopez |
a09598 |
int *event_basep, *error_basep;
|
|
Carlos Lopez |
a09598 |
{
|
|
Carlos Lopez |
a09598 |
XExtDisplayInfo *info = find_display (dpy);
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
TRACE("QueryExtension...");
|
|
Carlos Lopez |
a09598 |
if (XextHasExtension(info)) {
|
|
Carlos Lopez |
a09598 |
*event_basep = info->codes->first_event;
|
|
Carlos Lopez |
a09598 |
*error_basep = info->codes->first_error;
|
|
Carlos Lopez |
a09598 |
TRACE("QueryExtension... return True");
|
|
Carlos Lopez |
a09598 |
return True;
|
|
Carlos Lopez |
a09598 |
} else {
|
|
Carlos Lopez |
a09598 |
TRACE("QueryExtension... return False");
|
|
Carlos Lopez |
a09598 |
return False;
|
|
Carlos Lopez |
a09598 |
}
|
|
Carlos Lopez |
a09598 |
}
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
Bool XAppleWMQueryVersion(dpy, majorVersion, minorVersion, patchVersion)
|
|
Carlos Lopez |
a09598 |
Display* dpy;
|
|
Carlos Lopez |
a09598 |
int* majorVersion;
|
|
Carlos Lopez |
a09598 |
int* minorVersion;
|
|
Carlos Lopez |
a09598 |
int* patchVersion;
|
|
Carlos Lopez |
a09598 |
{
|
|
Carlos Lopez |
a09598 |
XExtDisplayInfo *info = find_display (dpy);
|
|
Carlos Lopez |
a09598 |
xAppleWMQueryVersionReply rep;
|
|
Carlos Lopez |
a09598 |
xAppleWMQueryVersionReq *req;
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
TRACE("QueryVersion...");
|
|
Carlos Lopez |
a09598 |
AppleWMCheckExtension (dpy, info, False);
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
LockDisplay(dpy);
|
|
Carlos Lopez |
a09598 |
GetReq(AppleWMQueryVersion, req);
|
|
Carlos Lopez |
a09598 |
req->reqType = info->codes->major_opcode;
|
|
Carlos Lopez |
a09598 |
req->wmReqType = X_AppleWMQueryVersion;
|
|
Carlos Lopez |
a09598 |
if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
|
|
Carlos Lopez |
a09598 |
UnlockDisplay(dpy);
|
|
Carlos Lopez |
a09598 |
SyncHandle();
|
|
Carlos Lopez |
a09598 |
TRACE("QueryVersion... return False");
|
|
Carlos Lopez |
a09598 |
return False;
|
|
Carlos Lopez |
a09598 |
}
|
|
Carlos Lopez |
a09598 |
*majorVersion = rep.majorVersion;
|
|
Carlos Lopez |
a09598 |
*minorVersion = rep.minorVersion;
|
|
Carlos Lopez |
a09598 |
*patchVersion = rep.patchVersion;
|
|
Carlos Lopez |
a09598 |
UnlockDisplay(dpy);
|
|
Carlos Lopez |
a09598 |
SyncHandle();
|
|
Carlos Lopez |
a09598 |
TRACE("QueryVersion... return True");
|
|
Carlos Lopez |
a09598 |
return True;
|
|
Carlos Lopez |
a09598 |
}
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
Bool XAppleWMDisableUpdate(dpy, screen)
|
|
Carlos Lopez |
a09598 |
Display* dpy;
|
|
Carlos Lopez |
a09598 |
int screen;
|
|
Carlos Lopez |
a09598 |
{
|
|
Carlos Lopez |
a09598 |
XExtDisplayInfo *info = find_display (dpy);
|
|
Carlos Lopez |
a09598 |
xAppleWMDisableUpdateReq *req;
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
TRACE("DisableUpdate...");
|
|
Carlos Lopez |
a09598 |
AppleWMCheckExtension (dpy, info, False);
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
LockDisplay(dpy);
|
|
Carlos Lopez |
a09598 |
GetReq(AppleWMDisableUpdate, req);
|
|
Carlos Lopez |
a09598 |
req->reqType = info->codes->major_opcode;
|
|
Carlos Lopez |
a09598 |
req->wmReqType = X_AppleWMDisableUpdate;
|
|
Carlos Lopez |
a09598 |
req->screen = screen;
|
|
Carlos Lopez |
a09598 |
UnlockDisplay(dpy);
|
|
Carlos Lopez |
a09598 |
SyncHandle();
|
|
Carlos Lopez |
a09598 |
TRACE("DisableUpdate... return True");
|
|
Carlos Lopez |
a09598 |
return True;
|
|
Carlos Lopez |
a09598 |
}
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
Bool XAppleWMReenableUpdate(dpy, screen)
|
|
Carlos Lopez |
a09598 |
Display* dpy;
|
|
Carlos Lopez |
a09598 |
int screen;
|
|
Carlos Lopez |
a09598 |
{
|
|
Carlos Lopez |
a09598 |
XExtDisplayInfo *info = find_display (dpy);
|
|
Carlos Lopez |
a09598 |
xAppleWMReenableUpdateReq *req;
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
TRACE("ReenableUpdate...");
|
|
Carlos Lopez |
a09598 |
AppleWMCheckExtension (dpy, info, False);
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
LockDisplay(dpy);
|
|
Carlos Lopez |
a09598 |
GetReq(AppleWMReenableUpdate, req);
|
|
Carlos Lopez |
a09598 |
req->reqType = info->codes->major_opcode;
|
|
Carlos Lopez |
a09598 |
req->wmReqType = X_AppleWMReenableUpdate;
|
|
Carlos Lopez |
a09598 |
req->screen = screen;
|
|
Carlos Lopez |
a09598 |
UnlockDisplay(dpy);
|
|
Carlos Lopez |
a09598 |
SyncHandle();
|
|
Carlos Lopez |
a09598 |
TRACE("ReenableUpdate... return True");
|
|
Carlos Lopez |
a09598 |
return True;
|
|
Carlos Lopez |
a09598 |
}
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
Bool XAppleWMSelectInput(dpy, mask)
|
|
Carlos Lopez |
a09598 |
Display* dpy;
|
|
Carlos Lopez |
a09598 |
unsigned long mask;
|
|
Carlos Lopez |
a09598 |
{
|
|
Carlos Lopez |
a09598 |
XExtDisplayInfo *info = find_display (dpy);
|
|
Carlos Lopez |
a09598 |
xAppleWMSelectInputReq *req;
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
TRACE("SelectInput...");
|
|
Carlos Lopez |
a09598 |
AppleWMCheckExtension (dpy, info, False);
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
LockDisplay(dpy);
|
|
Carlos Lopez |
a09598 |
GetReq(AppleWMSelectInput, req);
|
|
Carlos Lopez |
a09598 |
req->reqType = info->codes->major_opcode;
|
|
Carlos Lopez |
a09598 |
req->wmReqType = X_AppleWMSelectInput;
|
|
Carlos Lopez |
a09598 |
req->mask = mask;
|
|
Carlos Lopez |
a09598 |
UnlockDisplay(dpy);
|
|
Carlos Lopez |
a09598 |
SyncHandle();
|
|
Carlos Lopez |
a09598 |
TRACE("SetlectInput... return True");
|
|
Carlos Lopez |
a09598 |
return True;
|
|
Carlos Lopez |
a09598 |
}
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
Bool XAppleWMSetWindowMenuWithShortcuts(dpy, nitems, items, shortcuts)
|
|
Carlos Lopez |
a09598 |
Display* dpy;
|
|
Carlos Lopez |
a09598 |
int nitems;
|
|
Carlos Lopez |
a09598 |
const char **items;
|
|
Carlos Lopez |
a09598 |
const char *shortcuts;
|
|
Carlos Lopez |
a09598 |
{
|
|
Carlos Lopez |
a09598 |
XExtDisplayInfo *info = find_display (dpy);
|
|
Carlos Lopez |
a09598 |
xAppleWMSetWindowMenuReq *req;
|
|
Carlos Lopez |
a09598 |
int i, total_length, len;
|
|
Carlos Lopez |
a09598 |
char *buf, *ptr;
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
TRACE("SetWindowMenu...");
|
|
Carlos Lopez |
a09598 |
AppleWMCheckExtension (dpy, info, False);
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
LockDisplay(dpy);
|
|
Carlos Lopez |
a09598 |
GetReq(AppleWMSetWindowMenu, req);
|
|
Carlos Lopez |
a09598 |
req->reqType = info->codes->major_opcode;
|
|
Carlos Lopez |
a09598 |
req->wmReqType = X_AppleWMSetWindowMenu;
|
|
Carlos Lopez |
a09598 |
req->nitems = nitems;
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
total_length = 0;
|
|
Carlos Lopez |
a09598 |
for (i = 0; i < nitems; i++)
|
|
Carlos Lopez |
a09598 |
total_length += strlen (items[i]) + 2;
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
ptr = buf = alloca (total_length);
|
|
Carlos Lopez |
a09598 |
for (i = 0; i < nitems; i++)
|
|
Carlos Lopez |
a09598 |
{
|
|
Carlos Lopez |
a09598 |
len = strlen (items[i]);
|
|
Carlos Lopez |
a09598 |
*ptr++ = shortcuts ? shortcuts[i] : 0;
|
|
Carlos Lopez |
a09598 |
memcpy (ptr, items[i], len);
|
|
Carlos Lopez |
a09598 |
ptr[len] = 0;
|
|
Carlos Lopez |
a09598 |
ptr += len + 1;
|
|
Carlos Lopez |
a09598 |
}
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
req->length += (total_length + 3) >> 2;
|
|
Carlos Lopez |
a09598 |
Data (dpy, buf, total_length);
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
UnlockDisplay(dpy);
|
|
Carlos Lopez |
a09598 |
SyncHandle();
|
|
Carlos Lopez |
a09598 |
TRACE("SetlectInput... return True");
|
|
Carlos Lopez |
a09598 |
return True;
|
|
Carlos Lopez |
a09598 |
}
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
Bool XAppleWMSetWindowMenu(dpy, nitems, items)
|
|
Carlos Lopez |
a09598 |
Display* dpy;
|
|
Carlos Lopez |
a09598 |
int nitems;
|
|
Carlos Lopez |
a09598 |
const char **items;
|
|
Carlos Lopez |
a09598 |
{
|
|
Carlos Lopez |
a09598 |
return XAppleWMSetWindowMenuWithShortcuts (dpy, nitems, items, NULL);
|
|
Carlos Lopez |
a09598 |
}
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
Bool XAppleWMSetWindowMenuCheck(dpy, idx)
|
|
Carlos Lopez |
a09598 |
Display* dpy;
|
|
Carlos Lopez |
a09598 |
int idx;
|
|
Carlos Lopez |
a09598 |
{
|
|
Carlos Lopez |
a09598 |
XExtDisplayInfo *info = find_display (dpy);
|
|
Carlos Lopez |
a09598 |
xAppleWMSetWindowMenuCheckReq *req;
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
TRACE("SetWindowMenuCheck...");
|
|
Carlos Lopez |
a09598 |
AppleWMCheckExtension (dpy, info, False);
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
LockDisplay(dpy);
|
|
Carlos Lopez |
a09598 |
GetReq(AppleWMSetWindowMenuCheck, req);
|
|
Carlos Lopez |
a09598 |
req->reqType = info->codes->major_opcode;
|
|
Carlos Lopez |
a09598 |
req->wmReqType = X_AppleWMSetWindowMenuCheck;
|
|
Carlos Lopez |
a09598 |
req->index = idx;
|
|
Carlos Lopez |
a09598 |
UnlockDisplay(dpy);
|
|
Carlos Lopez |
a09598 |
SyncHandle();
|
|
Carlos Lopez |
a09598 |
TRACE("SetWindowMenuCheck... return True");
|
|
Carlos Lopez |
a09598 |
return True;
|
|
Carlos Lopez |
a09598 |
}
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
Bool XAppleWMSetFrontProcess(dpy)
|
|
Carlos Lopez |
a09598 |
Display* dpy;
|
|
Carlos Lopez |
a09598 |
{
|
|
Carlos Lopez |
a09598 |
XExtDisplayInfo *info = find_display (dpy);
|
|
Carlos Lopez |
a09598 |
xAppleWMSetFrontProcessReq *req;
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
TRACE("SetFrontProcess...");
|
|
Carlos Lopez |
a09598 |
AppleWMCheckExtension (dpy, info, False);
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
LockDisplay(dpy);
|
|
Carlos Lopez |
a09598 |
GetReq(AppleWMSetFrontProcess, req);
|
|
Carlos Lopez |
a09598 |
req->reqType = info->codes->major_opcode;
|
|
Carlos Lopez |
a09598 |
req->wmReqType = X_AppleWMSetFrontProcess;
|
|
Carlos Lopez |
a09598 |
UnlockDisplay(dpy);
|
|
Carlos Lopez |
a09598 |
SyncHandle();
|
|
Carlos Lopez |
a09598 |
TRACE("SetFrontProcess... return True");
|
|
Carlos Lopez |
a09598 |
return True;
|
|
Carlos Lopez |
a09598 |
}
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
Bool XAppleWMSetWindowLevel(dpy, id, level)
|
|
Carlos Lopez |
a09598 |
Display* dpy;
|
|
Carlos Lopez |
a09598 |
Window id;
|
|
Carlos Lopez |
a09598 |
int level;
|
|
Carlos Lopez |
a09598 |
{
|
|
Carlos Lopez |
a09598 |
XExtDisplayInfo *info = find_display (dpy);
|
|
Carlos Lopez |
a09598 |
xAppleWMSetWindowLevelReq *req;
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
TRACE("SetWindowLevel...");
|
|
Carlos Lopez |
a09598 |
AppleWMCheckExtension (dpy, info, False);
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
LockDisplay(dpy);
|
|
Carlos Lopez |
a09598 |
GetReq(AppleWMSetWindowLevel, req);
|
|
Carlos Lopez |
a09598 |
req->reqType = info->codes->major_opcode;
|
|
Carlos Lopez |
a09598 |
req->wmReqType = X_AppleWMSetWindowLevel;
|
|
Carlos Lopez |
a09598 |
req->window = id;
|
|
Carlos Lopez |
a09598 |
req->level = level;
|
|
Carlos Lopez |
a09598 |
UnlockDisplay(dpy);
|
|
Carlos Lopez |
a09598 |
SyncHandle();
|
|
Carlos Lopez |
a09598 |
TRACE("SetWindowLevel... return True");
|
|
Carlos Lopez |
a09598 |
return True;
|
|
Carlos Lopez |
a09598 |
}
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
Bool XAppleWMSetCanQuit(dpy, state)
|
|
Carlos Lopez |
a09598 |
Display* dpy;
|
|
Carlos Lopez |
a09598 |
Bool state;
|
|
Carlos Lopez |
a09598 |
{
|
|
Carlos Lopez |
a09598 |
XExtDisplayInfo *info = find_display (dpy);
|
|
Carlos Lopez |
a09598 |
xAppleWMSetCanQuitReq *req;
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
TRACE("SetCanQuit...");
|
|
Carlos Lopez |
a09598 |
AppleWMCheckExtension (dpy, info, False);
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
LockDisplay(dpy);
|
|
Carlos Lopez |
a09598 |
GetReq(AppleWMSetCanQuit, req);
|
|
Carlos Lopez |
a09598 |
req->reqType = info->codes->major_opcode;
|
|
Carlos Lopez |
a09598 |
req->wmReqType = X_AppleWMSetCanQuit;
|
|
Carlos Lopez |
a09598 |
req->state = state;
|
|
Carlos Lopez |
a09598 |
UnlockDisplay(dpy);
|
|
Carlos Lopez |
a09598 |
SyncHandle();
|
|
Carlos Lopez |
a09598 |
TRACE("SetCanQuit... return True");
|
|
Carlos Lopez |
a09598 |
return True;
|
|
Carlos Lopez |
a09598 |
}
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
Bool XAppleWMFrameGetRect(dpy, frame_class, frame_rect,
|
|
Carlos Lopez |
a09598 |
ix, iy, iw, ih, ox, oy, ow, oh, rx, ry, rw, rh)
|
|
Carlos Lopez |
a09598 |
Display* dpy;
|
|
Carlos Lopez |
a09598 |
unsigned int frame_class, frame_rect;
|
|
Carlos Lopez |
a09598 |
short ix, iy, iw, ih;
|
|
Carlos Lopez |
a09598 |
short ox, oy, ow, oh;
|
|
Carlos Lopez |
a09598 |
short *rx, *ry, *rw, *rh;
|
|
Carlos Lopez |
a09598 |
{
|
|
Carlos Lopez |
a09598 |
XExtDisplayInfo *info = find_display (dpy);
|
|
Carlos Lopez |
a09598 |
xAppleWMFrameGetRectReply rep;
|
|
Carlos Lopez |
a09598 |
xAppleWMFrameGetRectReq *req;
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
TRACE("FrameGetRect...");
|
|
Carlos Lopez |
a09598 |
AppleWMCheckExtension (dpy, info, False);
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
LockDisplay(dpy);
|
|
Carlos Lopez |
a09598 |
GetReq(AppleWMFrameGetRect, req);
|
|
Carlos Lopez |
a09598 |
req->reqType = info->codes->major_opcode;
|
|
Carlos Lopez |
a09598 |
req->wmReqType = X_AppleWMFrameGetRect;
|
|
Carlos Lopez |
a09598 |
req->frame_class = frame_class;
|
|
Carlos Lopez |
a09598 |
req->frame_rect = frame_rect;
|
|
Carlos Lopez |
a09598 |
req->ix = ix;
|
|
Carlos Lopez |
a09598 |
req->iy = iy;
|
|
Carlos Lopez |
a09598 |
req->iw = iw;
|
|
Carlos Lopez |
a09598 |
req->ih = ih;
|
|
Carlos Lopez |
a09598 |
req->ox = ox;
|
|
Carlos Lopez |
a09598 |
req->oy = oy;
|
|
Carlos Lopez |
a09598 |
req->ow = ow;
|
|
Carlos Lopez |
a09598 |
req->oh = oh;
|
|
Carlos Lopez |
a09598 |
rep.x = rep.y = rep.w = rep.h = 0;
|
|
Carlos Lopez |
a09598 |
if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
|
|
Carlos Lopez |
a09598 |
UnlockDisplay(dpy);
|
|
Carlos Lopez |
a09598 |
SyncHandle();
|
|
Carlos Lopez |
a09598 |
TRACE("FrameGetRect... return False");
|
|
Carlos Lopez |
a09598 |
return False;
|
|
Carlos Lopez |
a09598 |
}
|
|
Carlos Lopez |
a09598 |
*rx = rep.x; *ry = rep.y;
|
|
Carlos Lopez |
a09598 |
*rw = rep.w; *rh = rep.h;
|
|
Carlos Lopez |
a09598 |
UnlockDisplay(dpy);
|
|
Carlos Lopez |
a09598 |
SyncHandle();
|
|
Carlos Lopez |
a09598 |
TRACE("FrameGetRect... return True");
|
|
Carlos Lopez |
a09598 |
return True;
|
|
Carlos Lopez |
a09598 |
}
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
unsigned int XAppleWMFrameHitTest(dpy, frame_class, px, py,
|
|
Carlos Lopez |
a09598 |
ix, iy, iw, ih, ox, oy, ow, oh)
|
|
Carlos Lopez |
a09598 |
Display* dpy;
|
|
Carlos Lopez |
a09598 |
unsigned int frame_class;
|
|
Carlos Lopez |
a09598 |
short px, py;
|
|
Carlos Lopez |
a09598 |
short ix, iy, iw, ih;
|
|
Carlos Lopez |
a09598 |
short ox, oy, ow, oh;
|
|
Carlos Lopez |
a09598 |
{
|
|
Carlos Lopez |
a09598 |
XExtDisplayInfo *info = find_display (dpy);
|
|
Carlos Lopez |
a09598 |
xAppleWMFrameHitTestReply rep;
|
|
Carlos Lopez |
a09598 |
xAppleWMFrameHitTestReq *req;
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
TRACE("FrameHitTest...");
|
|
Carlos Lopez |
a09598 |
AppleWMCheckExtension (dpy, info, False);
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
LockDisplay(dpy);
|
|
Carlos Lopez |
a09598 |
GetReq(AppleWMFrameHitTest, req);
|
|
Carlos Lopez |
a09598 |
req->reqType = info->codes->major_opcode;
|
|
Carlos Lopez |
a09598 |
req->wmReqType = X_AppleWMFrameHitTest;
|
|
Carlos Lopez |
a09598 |
req->frame_class = frame_class;
|
|
Carlos Lopez |
a09598 |
req->px = px;
|
|
Carlos Lopez |
a09598 |
req->py = py;
|
|
Carlos Lopez |
a09598 |
req->ix = ix;
|
|
Carlos Lopez |
a09598 |
req->iy = iy;
|
|
Carlos Lopez |
a09598 |
req->iw = iw;
|
|
Carlos Lopez |
a09598 |
req->ih = ih;
|
|
Carlos Lopez |
a09598 |
req->ox = ox;
|
|
Carlos Lopez |
a09598 |
req->oy = oy;
|
|
Carlos Lopez |
a09598 |
req->ow = ow;
|
|
Carlos Lopez |
a09598 |
req->oh = oh;
|
|
Carlos Lopez |
a09598 |
rep.ret = 0;
|
|
Carlos Lopez |
a09598 |
if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
|
|
Carlos Lopez |
a09598 |
UnlockDisplay(dpy);
|
|
Carlos Lopez |
a09598 |
SyncHandle();
|
|
Carlos Lopez |
a09598 |
TRACE("FrameHitTest... return False");
|
|
Carlos Lopez |
a09598 |
return False;
|
|
Carlos Lopez |
a09598 |
}
|
|
Carlos Lopez |
a09598 |
UnlockDisplay(dpy);
|
|
Carlos Lopez |
a09598 |
SyncHandle();
|
|
Carlos Lopez |
a09598 |
TRACE("FrameHiTest... return True");
|
|
Carlos Lopez |
a09598 |
return rep.ret;
|
|
Carlos Lopez |
a09598 |
}
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
Bool XAppleWMFrameDraw(dpy, screen, window,
|
|
Carlos Lopez |
a09598 |
frame_class, frame_attr,
|
|
Carlos Lopez |
a09598 |
ix, iy, iw, ih, ox, oy, ow, oh,
|
|
Carlos Lopez |
a09598 |
title_length, title_bytes)
|
|
Carlos Lopez |
a09598 |
Display* dpy;
|
|
Carlos Lopez |
a09598 |
int screen;
|
|
Carlos Lopez |
a09598 |
Window window;
|
|
Carlos Lopez |
a09598 |
unsigned int frame_class, frame_attr;
|
|
Carlos Lopez |
a09598 |
short ix, iy, iw, ih;
|
|
Carlos Lopez |
a09598 |
short ox, oy, ow, oh;
|
|
Carlos Lopez |
a09598 |
unsigned int title_length;
|
|
Carlos Lopez |
a09598 |
const unsigned char *title_bytes;
|
|
Carlos Lopez |
a09598 |
{
|
|
Carlos Lopez |
a09598 |
XExtDisplayInfo *info = find_display (dpy);
|
|
Carlos Lopez |
a09598 |
xAppleWMFrameDrawReq *req;
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
TRACE("FrameDraw...");
|
|
Carlos Lopez |
a09598 |
AppleWMCheckExtension (dpy, info, False);
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
LockDisplay(dpy);
|
|
Carlos Lopez |
a09598 |
GetReq(AppleWMFrameDraw, req);
|
|
Carlos Lopez |
a09598 |
req->reqType = info->codes->major_opcode;
|
|
Carlos Lopez |
a09598 |
req->wmReqType = X_AppleWMFrameDraw;
|
|
Carlos Lopez |
a09598 |
req->screen = screen;
|
|
Carlos Lopez |
a09598 |
req->window = window;
|
|
Carlos Lopez |
a09598 |
req->frame_class = frame_class;
|
|
Carlos Lopez |
a09598 |
req->frame_attr = frame_attr;
|
|
Carlos Lopez |
a09598 |
req->ix = ix;
|
|
Carlos Lopez |
a09598 |
req->iy = iy;
|
|
Carlos Lopez |
a09598 |
req->iw = iw;
|
|
Carlos Lopez |
a09598 |
req->ih = ih;
|
|
Carlos Lopez |
a09598 |
req->ox = ox;
|
|
Carlos Lopez |
a09598 |
req->oy = oy;
|
|
Carlos Lopez |
a09598 |
req->ow = ow;
|
|
Carlos Lopez |
a09598 |
req->oh = oh;
|
|
Carlos Lopez |
a09598 |
req->title_length = title_length;
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
req->length += (title_length + 3)>>2;
|
|
Carlos Lopez |
a09598 |
Data (dpy, title_bytes, title_length);
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
UnlockDisplay(dpy);
|
|
Carlos Lopez |
a09598 |
SyncHandle();
|
|
Carlos Lopez |
a09598 |
TRACE("FrameDraw... return True");
|
|
Carlos Lopez |
a09598 |
return True;
|
|
Carlos Lopez |
a09598 |
}
|