diff options
70 files changed, 2182 insertions, 1795 deletions
diff --git a/xorg-server/config/10-evdev.conf b/xorg-server/config/10-evdev.conf index 7406f4ef2..cc83ab232 100644 --- a/xorg-server/config/10-evdev.conf +++ b/xorg-server/config/10-evdev.conf @@ -1,8 +1,40 @@ # # Catch-all evdev loader for udev-based systems -# +# We don't simply match on any device since that also adds accelerometers +# and other devices that we don't really want to use. The list below +# matches everything but joysticks. + Section "InputClass" - Identifier "evdev-catchall" + Identifier "evdev pointer catchall" + MatchIsPointer "on" + MatchDevicePath "/dev/input/event*" Driver "evdev" +EndSection + +Section "InputClass" + Identifier "evdev keyboard catchall" + MatchIsKeyboard "on" MatchDevicePath "/dev/input/event*" + Driver "evdev" +EndSection + +Section "InputClass" + Identifier "evdev touchpad catchall" + MatchIsTouchpad "on" + MatchDevicePath "/dev/input/event*" + Driver "evdev" +EndSection + +Section "InputClass" + Identifier "evdev tablet catchall" + MatchIsTablet "on" + MatchDevicePath "/dev/input/event*" + Driver "evdev" +EndSection + +Section "InputClass" + Identifier "evdev touchscreen catchall" + MatchIsTouchscreen "on" + MatchDevicePath "/dev/input/event*" + Driver "evdev" EndSection diff --git a/xorg-server/config/Makefile.am b/xorg-server/config/Makefile.am index eed745483..675a3b260 100644 --- a/xorg-server/config/Makefile.am +++ b/xorg-server/config/Makefile.am @@ -9,7 +9,7 @@ AM_CFLAGS += $(UDEV_CFLAGS) libconfig_la_SOURCES += udev.c libconfig_la_LIBADD = $(UDEV_LIBS) -xorgconfddir = $(prefix)/etc/X11/$(XF86CONFIGDIR) +xorgconfddir = $(datadir)/X11/$(XF86CONFIGDIR) xorgconfd_DATA = 10-evdev.conf else diff --git a/xorg-server/configure.ac b/xorg-server/configure.ac index 591d2b445..b1d511980 100644 --- a/xorg-server/configure.ac +++ b/xorg-server/configure.ac @@ -26,18 +26,18 @@ dnl dnl Process this file with autoconf to create configure. AC_PREREQ(2.57) -AC_INIT([xorg-server], 1.8.0, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server) -RELEASE_DATE="2010-04-02" +AC_INIT([xorg-server], 1.8.99.0, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server) +RELEASE_DATE="unreleased" AC_CONFIG_SRCDIR([Makefile.am]) AM_INIT_AUTOMAKE([foreign dist-bzip2]) AM_MAINTAINER_MODE # Require xorg-macros: XORG_DEFAULT_OPTIONS m4_ifndef([XORG_MACROS_VERSION], - [m4_fatal([must install xorg-macros 1.5 or later before running autoconf/autogen])]) -XORG_MACROS_VERSION(1.5) + [m4_fatal([must install xorg-macros 1.6 or later before running autoconf/autogen])]) +XORG_MACROS_VERSION(1.6) XORG_DEFAULT_OPTIONS -XORG_WITH_DOXYGEN +XORG_WITH_DOXYGEN(1.6.1) m4_ifndef([XORG_FONT_MACROS_VERSION], [m4_fatal([must install fontutil 1.1 or later before running autoconf/autogen])]) XORG_FONT_MACROS_VERSION(1.1) @@ -644,6 +644,7 @@ AC_ARG_ENABLE(xaa, AS_HELP_STRING([--enable-xaa], [Build XAA (defa AC_ARG_ENABLE(vgahw, AS_HELP_STRING([--enable-vgahw], [Build Xorg with vga access (default: enabled)]), [VGAHW=$enableval], [VGAHW=yes]) AC_ARG_ENABLE(vbe, AS_HELP_STRING([--enable-vbe], [Build Xorg with VBE module (default: enabled)]), [VBE=$enableval], [VBE=yes]) AC_ARG_ENABLE(int10-module, AS_HELP_STRING([--enable-int10-module], [Build Xorg with int10 module (default: enabled)]), [INT10MODULE=$enableval], [INT10MODULE=yes]) +AC_ARG_ENABLE(windowswm, AS_HELP_STRING([--enable-windowswm], [Build XWin with WindowsWM extension (default: no)]), [WINDOWSWM=$enableval], [WINDOWSWM=no]) dnl DDXes. AC_ARG_ENABLE(xorg, AS_HELP_STRING([--enable-xorg], [Build Xorg server (default: auto)]), [XORG=$enableval], [XORG=auto]) @@ -673,6 +674,7 @@ AC_ARG_ENABLE(install-setuid, AC_MSG_CHECKING([to see if we can install the Xorg server as root]) if test "x$SETUID" = "xauto" ; then case $host_os in + cygwin*) SETUID="no" ;; darwin*) SETUID="no" ;; *) case $host_cpu in @@ -723,8 +725,16 @@ XORG_CHECK_LINUXDOC dnl Handle installing libxf86config AM_CONDITIONAL(INSTALL_LIBXF86CONFIG, [test "x$INSTALL_LIBXF86CONFIG" = xyes]) -dnl XQuartz DDX Detection... Yes, it's ugly to have it here... but we need to handle this early on +dnl DDX Detection... Yes, it's ugly to have it here... but we need to +dnl handle this early on so that we don't require unsupported extensions case $host_os in + cygwin*) + DGA=no + DRI2=no + XF86VIDMODE=no + XSELINUX=no + XV=no + ;; darwin*) DRI2=no @@ -1792,8 +1802,10 @@ if test "x$XORG" = xyes; then AC_SUBST([driverdir]) sdkdir="$includedir/xorg" extdir="$includedir/X11/extensions" + sysconfigdir="$datadir/X11/$XF86CONFIGDIR" AC_SUBST([sdkdir]) AC_SUBST([extdir]) + AC_SUBST([sysconfigdir]) AC_SUBST([logdir]) # stuff the ABI versions into the pc file too @@ -1834,27 +1846,30 @@ fi AC_MSG_RESULT([$XWIN]) if test "x$XWIN" = xyes; then - PKG_CHECK_EXISTS($WINDOWSWMPROTO, [WINDOWSWM=yes], [WINDOWSWM=no]) AC_DEFINE_DIR(SYSCONFDIR, sysconfdir, [Location of system.XWinrc]) AC_DEFINE_DIR(DEFAULT_LOGDIR, logdir, [Default log location]) AC_DEFINE_UNQUOTED(XORG_VERSION_CURRENT, [$VENDOR_RELEASE], [Current Xorg version]) AC_DEFINE_UNQUOTED(__VENDORDWEBSUPPORT__, ["$VENDOR_WEB"], [Vendor web address for support]) AC_CHECK_TOOL(WINDRES, windres) + + PKG_CHECK_MODULES([XWINMODULES],[x11 xdmcp xau xfont]) + + if test "x$WINDOWSWM" = xauto; then + PKG_CHECK_EXISTS($WINDOWSWMPROTO, [WINDOWSWM=yes], [WINDOWSWM=no]) + fi + if test "x$WINDOWSWM" = xyes ; then + PKG_CHECK_MODULES(WINDOWSWM, $WINDOWSWMPROTO) + XWINMODULES_CFLAGS="$XWINMODULES_CFLAGS $WINDOWSWM_CFLAGS" + AC_DEFINE(ROOTLESS,1,[Build Rootless code]) + fi + case $host_os in cygwin*) XWIN_SERVER_NAME=XWin - PKG_CHECK_MODULES([XWINMODULES],[x11 xdmcp xau xfont]) AC_DEFINE(HAS_DEVWINDOWS,1,[Cygwin has /dev/windows for signaling new win32 messages]) - - dnl if we have windowswmproto, build rootless extension for multwindowextwm mode - if test "x$WINDOWSWM" = xyes ; then - AC_DEFINE(ROOTLESS,1,[Build Rootless code]) - CFLAGS="$CFLAGS -DROOTLESS_WORKAROUND" - fi ;; mingw*) XWIN_SERVER_NAME=Xming - PKG_CHECK_MODULES([XWINMODULES],[x11 xdmcp xau xfont]) AC_DEFINE(RELOCATE_PROJECTROOT,1,[Make PROJECT_ROOT relative to the xserver location]) AC_DEFINE(HAS_WINSOCK,1,[Use Windows sockets]) XWIN_SYS_LIBS=-lwinsock2 @@ -1874,10 +1889,6 @@ if test "x$XWIN" = xyes; then AC_DEFINE(DDXOSVERRORF, 1, [Use OsVendorVErrorF]) AC_DEFINE(DDXBEFORERESET, 1, [Use ddxBeforeReset ]) - if test "x$XF86VIDMODE" = xyes; then - AC_MSG_NOTICE([Disabling XF86VidMode extension]) - XF86VIDMODE=no - fi fi AM_CONDITIONAL(XWIN, [test "x$XWIN" = xyes]) AM_CONDITIONAL(XWIN_MULTIWINDOW, [test "x$XWIN" = xyes]) diff --git a/xorg-server/cpprules.in b/xorg-server/cpprules.in index 301305e58..6e435785a 100644 --- a/xorg-server/cpprules.in +++ b/xorg-server/cpprules.in @@ -34,6 +34,7 @@ MANDEFS = \ -D__adminmansuffix__=$(ADMIN_MAN_SUFFIX) \ -D__mandir__=$(mandir) \ -D__projectroot__=$(prefix) \ + -D__sysconfdir__=$(sysconfdir) \ -D__datadir__=$(datadir) \ -D__xconfigfile__=$(__XCONFIGFILE__) \ -D__xconfigdir__=$(__XCONFIGDIR__) \ diff --git a/xorg-server/dix/events.c b/xorg-server/dix/events.c index 657a32057..1d0d5b280 100644 --- a/xorg-server/dix/events.c +++ b/xorg-server/dix/events.c @@ -738,7 +738,11 @@ CheckPhysLimits( new.y = pSprite->physLimits.y2 - 1; if (pSprite->hotShape) ConfineToShape(pDev, pSprite->hotShape, &new.x, &new.y); - if ((pScreen != pSprite->hotPhys.pScreen) || + if (( +#ifdef PANORAMIX + noPanoramiXExtension && +#endif + (pScreen != pSprite->hotPhys.pScreen)) || (new.x != pSprite->hotPhys.x) || (new.y != pSprite->hotPhys.y)) { #ifdef PANORAMIX @@ -3979,7 +3983,7 @@ DeliverGrabbedEvent(InternalEvent *event, DeviceIntPtr thisDev, FreezeThaw(dev, TRUE); if ((dev->deviceGrab.sync.state == FREEZE_BOTH_NEXT_EVENT) && (CLIENT_BITS(grab->resource) == - CLIENT_BITS(dev->deviceGrab.sync.other->resource))) + CLIENT_BITS(dev->deviceGrab.grab->resource))) dev->deviceGrab.sync.state = FROZEN_NO_EVENT; else dev->deviceGrab.sync.other = grab; diff --git a/xorg-server/hw/vfb/InitInput.c b/xorg-server/hw/vfb/InitInput.c index 35d1dc4d2..10bb6a599 100644 --- a/xorg-server/hw/vfb/InitInput.c +++ b/xorg-server/hw/vfb/InitInput.c @@ -43,6 +43,7 @@ from The Open Group. #include <X11/keysym.h> #include "xserver-properties.h" #include "exevents.h" +#include "extinit.h" Bool LegalModifier(unsigned int key, DeviceIntPtr pDev) @@ -136,10 +137,15 @@ void InitInput(int argc, char *argv[]) { DeviceIntPtr p, k; + Atom xiclass; p = AddInputDevice(serverClient, vfbMouseProc, TRUE); k = AddInputDevice(serverClient, vfbKeybdProc, TRUE); RegisterPointerDevice(p); + xiclass = MakeAtom(XI_MOUSE, sizeof(XI_MOUSE) - 1, TRUE); + AssignTypeAndName(p, xiclass, "Xvfb mouse"); RegisterKeyboardDevice(k); + xiclass = MakeAtom(XI_KEYBOARD, sizeof(XI_KEYBOARD) - 1, TRUE); + AssignTypeAndName(k, xiclass, "Xvfb keyboard"); (void)mieqInit(); } diff --git a/xorg-server/hw/xfree86/common/xf86Config.c b/xorg-server/hw/xfree86/common/xf86Config.c index 718a07860..1e9543fa2 100644 --- a/xorg-server/hw/xfree86/common/xf86Config.c +++ b/xorg-server/hw/xfree86/common/xf86Config.c @@ -97,20 +97,15 @@ extern DeviceAssocRec mouse_assoc; #endif #ifndef ROOT_CONFIGDIRPATH #define ROOT_CONFIGDIRPATH "%A," "%R," \ - "/etc/X11/%R," "%P/etc/X11/%R," \ - "/etc/X11/%X-%M," "/etc/X11/%X," "/etc/%X," \ - "%P/etc/X11/%X.%H," "%P/etc/X11/%X-%M," \ - "%P/etc/X11/%X," \ - "%P/lib/X11/%X.%H," "%P/lib/X11/%X-%M," \ - "%P/lib/X11/%X" + "/etc/X11/%R," "%C/X11/%R," \ + "/etc/X11/%X," "%C/X11/%X" #endif #ifndef USER_CONFIGDIRPATH -#define USER_CONFIGDIRPATH "/etc/X11/%S," "%P/etc/X11/%S," \ - "/etc/X11/%X-%M," "/etc/X11/%X," "/etc/%X," \ - "%P/etc/X11/%X.%H," "%P/etc/X11/%X-%M," \ - "%P/etc/X11/%X," \ - "%P/lib/X11/%X.%H," "%P/lib/X11/%X-%M," \ - "%P/lib/X11/%X" +#define USER_CONFIGDIRPATH "/etc/X11/%R," "%C/X11/%R," \ + "/etc/X11/%X," "%C/X11/%X" +#endif +#ifndef SYS_CONFIGDIRPATH +#define SYS_CONFIGDIRPATH "/usr/share/X11/%X," "%D/X11/%X" #endif #ifndef PROJECTROOT #define PROJECTROOT "/usr/X11R6" @@ -2429,7 +2424,7 @@ checkInput(serverLayoutPtr layout, Bool implicit_layout) { ConfigStatus xf86HandleConfigFile(Bool autoconfig) { - const char *filename, *dirname; + const char *filename, *dirname, *sysdirname; char *filesearch, *dirsearch; MessageType filefrom = X_DEFAULT; MessageType dirfrom = X_DEFAULT; @@ -2452,6 +2447,8 @@ xf86HandleConfigFile(Bool autoconfig) dirfrom = X_CMDLINE; xf86initConfigFiles(); + sysdirname = xf86openConfigDirFiles(SYS_CONFIGDIRPATH, NULL, + PROJECTROOT); dirname = xf86openConfigDirFiles(dirsearch, xf86ConfigDir, PROJECTROOT); filename = xf86openConfigFile(filesearch, xf86ConfigFile, PROJECTROOT); if (filename) { @@ -2472,7 +2469,10 @@ xf86HandleConfigFile(Bool autoconfig) "Unable to locate/open config directory: \"%s\"\n", xf86ConfigDir); } - if (!filename && !dirname) + if (sysdirname) + xf86MsgVerb(X_DEFAULT, 0, "Using system config directory \"%s\"\n", + sysdirname); + if (!filename && !dirname && !sysdirname) return CONFIG_NOFILE; } diff --git a/xorg-server/hw/xfree86/common/xf86Xinput.c b/xorg-server/hw/xfree86/common/xf86Xinput.c index 822922717..7723ba683 100644 --- a/xorg-server/hw/xfree86/common/xf86Xinput.c +++ b/xorg-server/hw/xfree86/common/xf86Xinput.c @@ -625,25 +625,30 @@ MergeInputClasses(IDevPtr idev, InputAttributes *attrs) return Success; } +/* + * Iterate the list of classes and look for Option "Ignore". Return the + * value of the last matching class and holler when returning TRUE. + */ static Bool IgnoreInputClass(IDevPtr idev, InputAttributes *attrs) { XF86ConfInputClassPtr cl; - Bool ignore; + Bool ignore = FALSE; + const char *ignore_class; for (cl = xf86configptr->conf_inputclass_lst; cl; cl = cl->list.next) { if (!InputClassMatches(cl, attrs)) continue; if (xf86findOption(cl->option_lst, "Ignore")) { ignore = xf86CheckBoolOption(cl->option_lst, "Ignore", FALSE); - if (ignore) - xf86Msg(X_CONFIG, - "%s: Ignoring device from InputClass \"%s\"\n", - idev->identifier, cl->identifier); - return ignore; + ignore_class = cl->identifier; } } - return FALSE; + + if (ignore) + xf86Msg(X_CONFIG, "%s: Ignoring device from InputClass \"%s\"\n", + idev->identifier, ignore_class); + return ignore; } /** diff --git a/xorg-server/hw/xfree86/doc/man/xorg.conf.man.pre b/xorg-server/hw/xfree86/doc/man/xorg.conf.man.pre index 93c8ac41d..f7ff6f617 100644 --- a/xorg-server/hw/xfree86/doc/man/xorg.conf.man.pre +++ b/xorg-server/hw/xfree86/doc/man/xorg.conf.man.pre @@ -102,19 +102,51 @@ is the machine's hostname as reported by .BR gethostname (__libmansuffix__). .PP Additional configuration files are searched for in the following -directories: +directories when the server is started as a normal user: .PP .RS 4 .nf -.I /etc/X11/__xconfigdir__\-4 +.IR /etc/X11/ <cmdline> +.IR __sysconfdir__/X11/ <cmdline> .I /etc/X11/__xconfigdir__ -.I /etc/__xconfigdir__ -.IR __projectroot__/etc/X11/__xconfigdir__. <hostname> -.I __projectroot__/etc/X11/__xconfigdir__\-4 -.I __projectroot__/etc/X11/__xconfigdir__ -.IR __projectroot__/lib/X11/__xconfigdir__. <hostname> -.I __projectroot__/lib/X11/__xconfigdir__\-4 -.I __projectroot__/lib/X11/__xconfigdir__ +.I __sysconfdir__/X11/__xconfigdir__ +.fi +.RE +.PP +where +.I <cmdline> +is a relative path (with no \(lq..\(rq components) specified with the +.B \-configdir +command line option. +.PP +When the __xservername__ server is started by the \(lqroot\(rq user, the +config directory search locations are as follows: +.PP +.RS 4 +.nf +<cmdline> +.IR /etc/X11/ <cmdline> +.IR __sysconfdir__/X11/ <cmdline> +.I /etc/X11/__xconfigdir__ +.I __sysconfdir__/X11/__xconfigdir__ +.fi +.RE +.PP +where +.I <cmdline> +is the path specified with the +.B \-configdir +command line option (which may be absolute or relative). +.PP +Finally, configuration files will also be searched for in directories +reserved for system use. These are to separate configuration files from +the vendor or 3rd party packages from those of local administration. +These files are found in the following directories: +.PP +.RS 4 +.nf +.I /usr/share/X11/__xconfigdir__ +.I __datadir__/X11/__xconfigdir__ .fi .RE .PP @@ -2373,25 +2405,16 @@ Display drivers: .PP Input drivers: .BR acecad (__drivermansuffix__), -.BR calcomp (__drivermansuffix__), .BR citron (__drivermansuffix__), -.BR dmc (__drivermansuffix__), -.BR dynapro (__drivermansuffix__), .BR elographics (__drivermansuffix__), .BR evdev (__drivermansuffix__), .BR fpit (__drivermansuffix__), -.BR js_x (__drivermansuffix__), .BR joystick (__drivermansuffix__), .BR kbd (__drivermansuffix__), -.BR magictouch (__drivermansuffix__), -.BR microtouch (__drivermansuffix__), .BR mousedrv (__drivermansuffix__), .BR mutouch (__drivermansuffix__), -.BR palmax (__drivermansuffix__), .BR penmount (__drivermansuffix__), .BR synaptics (__drivermansuffix__), -.BR tek4957 (__drivermansuffix__), -.BR ur98 (__drivermansuffix__), .BR vmmouse (__drivermansuffix__), .BR void (__drivermansuffix__), .BR wacom (__drivermansuffix__). diff --git a/xorg-server/hw/xfree86/dri2/dri2.c b/xorg-server/hw/xfree86/dri2/dri2.c index 48618e1a5..2bdb73392 100644 --- a/xorg-server/hw/xfree86/dri2/dri2.c +++ b/xorg-server/hw/xfree86/dri2/dri2.c @@ -45,6 +45,9 @@ #include "xf86.h" +CARD8 dri2_major; /* version of DRI2 supported by DDX */ +CARD8 dri2_minor; + static int dri2ScreenPrivateKeyIndex; static DevPrivateKey dri2ScreenPrivateKey = &dri2ScreenPrivateKeyIndex; static int dri2WindowPrivateKeyIndex; @@ -60,10 +63,13 @@ typedef struct _DRI2Drawable { int bufferCount; unsigned int swapsPending; ClientPtr blockedClient; + Bool blockedOnMsc; int swap_interval; CARD64 swap_count; - CARD64 target_sbc; /* -1 means no SBC wait outstanding */ + int64_t target_sbc; /* -1 means no SBC wait outstanding */ CARD64 last_swap_target; /* most recently queued swap target */ + CARD64 last_swap_msc; /* msc at completion of most recent swap */ + CARD64 last_swap_ust; /* ust at completion of most recent swap */ int swap_limit; /* for N-buffering */ } DRI2DrawableRec, *DRI2DrawablePtr; @@ -116,9 +122,11 @@ DRI2GetDrawable(DrawablePtr pDraw) int DRI2CreateDrawable(DrawablePtr pDraw) { + DRI2ScreenPtr ds = DRI2GetScreen(pDraw->pScreen); WindowPtr pWin; PixmapPtr pPixmap; DRI2DrawablePtr pPriv; + CARD64 ust; pPriv = DRI2GetDrawable(pDraw); if (pPriv != NULL) @@ -138,11 +146,17 @@ DRI2CreateDrawable(DrawablePtr pDraw) pPriv->bufferCount = 0; pPriv->swapsPending = 0; pPriv->blockedClient = NULL; + pPriv->blockedOnMsc = FALSE; pPriv->swap_count = 0; pPriv->target_sbc = -1; pPriv->swap_interval = 1; - pPriv->last_swap_target = -1; + /* Initialize last swap target from DDX if possible */ + if (!ds->GetMSC || !(*ds->GetMSC)(pDraw, &ust, &pPriv->last_swap_target)) + pPriv->last_swap_target = 0; + pPriv->swap_limit = 1; /* default to double buffering */ + pPriv->last_swap_msc = 0; + pPriv->last_swap_ust = 0; if (pDraw->type == DRAWABLE_WINDOW) { @@ -390,6 +404,15 @@ DRI2ThrottleClient(ClientPtr client, DrawablePtr pDraw) return FALSE; } +static void +__DRI2BlockClient(ClientPtr client, DRI2DrawablePtr pPriv) +{ + if (pPriv->blockedClient == NULL) { + IgnoreClient(client); + pPriv->blockedClient = client; + } +} + void DRI2BlockClient(ClientPtr client, DrawablePtr pDraw) { @@ -399,10 +422,8 @@ DRI2BlockClient(ClientPtr client, DrawablePtr pDraw) if (pPriv == NULL) return; - if (pPriv->blockedClient == NULL) { - IgnoreClient(client); - pPriv->blockedClient = client; - } + __DRI2BlockClient(client, pPriv); + pPriv->blockedOnMsc = TRUE; } int @@ -483,6 +504,11 @@ DRI2WaitMSCComplete(ClientPtr client, DrawablePtr pDraw, int frame, AttendClient(pPriv->blockedClient); pPriv->blockedClient = NULL; + pPriv->blockedOnMsc = FALSE; + + /* If there's still a swap pending, let DRI2SwapComplete free it */ + if (pPriv->refCount == 0 && pPriv->swapsPending == 0) + DRI2FreeDrawable(pDraw); } static void @@ -500,21 +526,26 @@ DRI2WakeClient(ClientPtr client, DrawablePtr pDraw, int frame, } /* - * Swap completed. Either wake up an SBC waiter or a client that was - * blocked due to GLX activity during a swap. + * Swap completed. + * Wake the client iff: + * - it was waiting on SBC + * - was blocked due to GLX make current + * - was blocked due to swap throttling + * - is not blocked due to an MSC wait */ if (pPriv->target_sbc != -1 && - pPriv->target_sbc >= pPriv->swap_count) { + pPriv->target_sbc <= pPriv->swap_count) { ProcDRI2WaitMSCReply(client, ((CARD64)tv_sec * 1000000) + tv_usec, frame, pPriv->swap_count); pPriv->target_sbc = -1; AttendClient(pPriv->blockedClient); pPriv->blockedClient = NULL; - } else if (pPriv->target_sbc == -1) { - if (pPriv->blockedClient) + } else if (pPriv->target_sbc == -1 && !pPriv->blockedOnMsc) { + if (pPriv->blockedClient) { AttendClient(pPriv->blockedClient); - pPriv->blockedClient = NULL; + pPriv->blockedClient = NULL; + } } } @@ -534,21 +565,24 @@ DRI2SwapComplete(ClientPtr client, DrawablePtr pDraw, int frame, return; } - if (pPriv->refCount == 0) { - xf86DrvMsg(pScreen->myNum, X_ERROR, - "[DRI2] %s: bad drawable refcount\n", __func__); - DRI2FreeDrawable(pDraw); - return; - } + pPriv->swapsPending--; + pPriv->swap_count++; ust = ((CARD64)tv_sec * 1000000) + tv_usec; if (swap_complete) swap_complete(client, swap_data, type, ust, frame, pPriv->swap_count); - pPriv->swapsPending--; - pPriv->swap_count++; + pPriv->last_swap_msc = frame; + pPriv->last_swap_ust = ust; DRI2WakeClient(client, pDraw, frame, tv_sec, tv_usec); + + /* + * It's normal for the app to have exited with a swap outstanding, but + * don't free the drawable until they're all complete. + */ + if (pPriv->swapsPending == 0 && pPriv->refCount == 0) + DRI2FreeDrawable(pDraw); } Bool @@ -563,7 +597,7 @@ DRI2WaitSwap(ClientPtr client, DrawablePtr pDrawable) pPriv->blockedClient == NULL) { ResetCurrentRequest(client); client->sequence--; - DRI2BlockClient(client, pDrawable); + __DRI2BlockClient(client, pPriv); return TRUE; } @@ -579,7 +613,6 @@ DRI2SwapBuffers(ClientPtr client, DrawablePtr pDraw, CARD64 target_msc, DRI2ScreenPtr ds = DRI2GetScreen(pDraw->pScreen); DRI2DrawablePtr pPriv; DRI2BufferPtr pDestBuffer = NULL, pSrcBuffer = NULL; - CARD64 ust; int ret, i; pPriv = DRI2GetDrawable(pDraw); @@ -601,8 +634,8 @@ DRI2SwapBuffers(ClientPtr client, DrawablePtr pDraw, CARD64 target_msc, return BadDrawable; } - /* Old DDX, just blit */ - if (!ds->ScheduleSwap) { + /* Old DDX or no swap interval, just blit */ + if (!ds->ScheduleSwap || !pPriv->swap_interval) { BoxRec box; RegionRec region; @@ -623,52 +656,52 @@ DRI2SwapBuffers(ClientPtr client, DrawablePtr pDraw, CARD64 target_msc, /* * In the simple glXSwapBuffers case, all params will be 0, and we just * need to schedule a swap for the last swap target + the swap interval. - * If the last swap target hasn't been set yet, call into the driver - * to get the current count. */ - if (target_msc == 0 && divisor == 0 && remainder == 0 && - pPriv->last_swap_target < 0) { - ret = (*ds->GetMSC)(pDraw, &ust, &target_msc); - if (!ret) { - xf86DrvMsg(pScreen->myNum, X_ERROR, - "[DRI2] %s: driver failed to return current MSC\n", - __func__); - return BadDrawable; - } + if (target_msc == 0 && divisor == 0 && remainder == 0) { + /* + * Swap target for this swap is last swap target + swap interval since + * we have to account for the current swap count, interval, and the + * number of pending swaps. + */ + *swap_target = pPriv->last_swap_target + pPriv->swap_interval; + } else { + /* glXSwapBuffersMscOML could have a 0 target_msc, honor it */ + *swap_target = target_msc; } - /* First swap needs to initialize last_swap_target */ - if (pPriv->last_swap_target < 0) - pPriv->last_swap_target = target_msc; - - /* - * Swap target for this swap is last swap target + swap interval since - * we have to account for the current swap count, interval, and the - * number of pending swaps. - */ - *swap_target = pPriv->last_swap_target + pPriv->swap_interval; - + pPriv->swapsPending++; ret = (*ds->ScheduleSwap)(client, pDraw, pDestBuffer, pSrcBuffer, swap_target, divisor, remainder, func, data); if (!ret) { + pPriv->swapsPending--; /* didn't schedule */ xf86DrvMsg(pScreen->myNum, X_ERROR, "[DRI2] %s: driver failed to schedule swap\n", __func__); return BadDrawable; } - pPriv->swapsPending++; pPriv->last_swap_target = *swap_target; + /* According to spec, return expected swapbuffers count SBC after this swap + * will complete. + */ + *swap_target = pPriv->swap_count + pPriv->swapsPending; + return Success; } void DRI2SwapInterval(DrawablePtr pDrawable, int interval) { + ScreenPtr pScreen = pDrawable->pScreen; DRI2DrawablePtr pPriv = DRI2GetDrawable(pDrawable); - /* fixme: check against arbitrary max? */ + if (pPriv == NULL) { + xf86DrvMsg(pScreen->myNum, X_ERROR, + "[DRI2] %s: bad drawable\n", __func__); + return; + } + /* fixme: check against arbitrary max? */ pPriv->swap_interval = interval; } @@ -717,7 +750,7 @@ DRI2WaitMSC(ClientPtr client, DrawablePtr pDraw, CARD64 target_msc, Bool ret; pPriv = DRI2GetDrawable(pDraw); - if (pPriv == NULL) + if (pPriv == NULL || pPriv->refCount == 0) return BadDrawable; /* Old DDX just completes immediately */ @@ -741,14 +774,28 @@ DRI2WaitSBC(ClientPtr client, DrawablePtr pDraw, CARD64 target_sbc, DRI2DrawablePtr pPriv; pPriv = DRI2GetDrawable(pDraw); - if (pPriv == NULL) + if (pPriv == NULL || pPriv->refCount == 0) return BadDrawable; - if (pPriv->swap_count >= target_sbc) - return Success; + /* target_sbc == 0 means to block until all pending swaps are + * finished. Recalculate target_sbc to get that behaviour. + */ + if (target_sbc == 0) + target_sbc = pPriv->swap_count + pPriv->swapsPending; + + /* If current swap count already >= target_sbc, + * return immediately with (ust, msc, sbc) triplet of + * most recent completed swap. + */ + if (pPriv->swap_count >= target_sbc) { + *sbc = pPriv->swap_count; + *msc = pPriv->last_swap_msc; + *ust = pPriv->last_swap_ust; + return Success; + } pPriv->target_sbc = target_sbc; - DRI2BlockClient(client, pDraw); + __DRI2BlockClient(client, pPriv); return Success; } @@ -776,14 +823,22 @@ DRI2DestroyDrawable(DrawablePtr pDraw) xfree(pPriv->buffers); } - /* If the window is destroyed while we have a swap pending, don't + /* If the window is destroyed while we have a swap or wait pending, don't * actually free the priv yet. We'll need it in the DRI2SwapComplete() * callback and we'll free it there once we're done. */ - if (!pPriv->swapsPending) + if (!pPriv->swapsPending && !pPriv->blockedClient) DRI2FreeDrawable(pDraw); } Bool +DRI2HasSwapControl(ScreenPtr pScreen) +{ + DRI2ScreenPtr ds = DRI2GetScreen(pScreen); + + return (ds->ScheduleSwap && ds->GetMSC); +} + +Bool DRI2Connect(ScreenPtr pScreen, unsigned int driverType, int *fd, const char **driverName, const char **deviceName) { @@ -820,6 +875,7 @@ DRI2ScreenInit(ScreenPtr pScreen, DRI2InfoPtr info) "VDPAU", /* DRI2DriverVDPAU */ }; unsigned int i; + CARD8 cur_minor; if (info->version < 3) return FALSE; @@ -836,6 +892,7 @@ DRI2ScreenInit(ScreenPtr pScreen, DRI2InfoPtr info) ds->fd = info->fd; ds->deviceName = info->deviceName; + dri2_major = 1; ds->CreateBuffer = info->CreateBuffer; ds->DestroyBuffer = info->DestroyBuffer; @@ -845,8 +902,15 @@ DRI2ScreenInit(ScreenPtr pScreen, DRI2InfoPtr info) ds->ScheduleSwap = info->ScheduleSwap; ds->ScheduleWaitMSC = info->ScheduleWaitMSC; ds->GetMSC = info->GetMSC; + cur_minor = 2; + } else { + cur_minor = 1; } + /* Initialize minor if needed and set to minimum provied by DDX */ + if (!dri2_minor || dri2_minor > cur_minor) + dri2_minor = cur_minor; + if (info->version == 3 || info->numDrivers == 0) { /* Driver too old: use the old-style driverName field */ ds->numDrivers = 1; diff --git a/xorg-server/hw/xfree86/dri2/dri2.h b/xorg-server/hw/xfree86/dri2/dri2.h index cb818f898..ce8a5df41 100644 --- a/xorg-server/hw/xfree86/dri2/dri2.h +++ b/xorg-server/hw/xfree86/dri2/dri2.h @@ -1,268 +1,274 @@ -/*
- * Copyright © 2007 Red Hat, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Soft-
- * ware"), to deal in the Software without restriction, including without
- * limitation the rights to use, copy, modify, merge, publish, distribute,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, provided that the above copyright
- * notice(s) and this permission notice appear in all copies of the Soft-
- * ware and that both the above copyright notice(s) and this permission
- * notice appear in supporting documentation.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
- * ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY
- * RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN
- * THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSE-
- * QUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFOR-
- * MANCE OF THIS SOFTWARE.
- *
- * Except as contained in this notice, the name of a copyright holder shall
- * not be used in advertising or otherwise to promote the sale, use or
- * other dealings in this Software without prior written authorization of
- * the copyright holder.
- *
- * Authors:
- * Kristian Høgsberg (krh@redhat.com)
- */
-
-#ifndef _DRI2_H_
-#define _DRI2_H_
-
-#include <X11/extensions/dri2tokens.h>
-
-/* Version 2 structure (with format at the end) */
-typedef struct {
- unsigned int attachment;
- unsigned int name;
- unsigned int pitch;
- unsigned int cpp;
- unsigned int flags;
- unsigned int format;
- void *driverPrivate;
-} DRI2BufferRec, *DRI2BufferPtr;
-
-typedef DRI2BufferRec DRI2Buffer2Rec, *DRI2Buffer2Ptr;
-typedef void (*DRI2SwapEventPtr)(ClientPtr client, void *data, int type,
- CARD64 ust, CARD64 msc, CARD64 sbc);
-
-
-typedef DRI2BufferPtr (*DRI2CreateBuffersProcPtr)(DrawablePtr pDraw,
- unsigned int *attachments,
- int count);
-typedef void (*DRI2DestroyBuffersProcPtr)(DrawablePtr pDraw,
- DRI2BufferPtr buffers,
- int count);
-typedef void (*DRI2CopyRegionProcPtr)(DrawablePtr pDraw,
- RegionPtr pRegion,
- DRI2BufferPtr pDestBuffer,
- DRI2BufferPtr pSrcBuffer);
-typedef void (*DRI2WaitProcPtr)(WindowPtr pWin,
- unsigned int sequence);
-/**
- * Schedule a buffer swap
- *
- * This callback is used to support glXSwapBuffers and the OML_sync_control
- * extension (see it for a description of the params).
- *
- * Drivers should queue an event for the frame count that satisfies the
- * parameters passed in. If the event is in the future (i.e. the conditions
- * aren't currently satisfied), the server may block the client at the next
- * GLX request using DRI2WaitSwap. When the event arrives, drivers should call
- * \c DRI2SwapComplete, which will handle waking the client and returning
- * the appropriate data.
- *
- * The DDX is responsible for doing a flip, exchange, or blit of the swap
- * when the corresponding event arrives. The \c DRI2CanFlip and
- * \c DRI2CanExchange functions can be used as helpers for this purpose.
- *
- * \param client client pointer (used for block/unblock)
- * \param pDraw drawable whose count we want
- * \param pDestBuffer current front buffer
- * \param pSrcBuffer current back buffer
- * \param target_msc frame count to wait for
- * \param divisor divisor for condition equation
- * \param remainder remainder for division equation
- * \param func function to call when the swap completes
- * \param data data for the callback \p func.
- */
-typedef int (*DRI2ScheduleSwapProcPtr)(ClientPtr client,
- DrawablePtr pDraw,
- DRI2BufferPtr pDestBuffer,
- DRI2BufferPtr pSrcBuffer,
- CARD64 *target_msc,
- CARD64 divisor,
- CARD64 remainder,
- DRI2SwapEventPtr func,
- void *data);
-typedef DRI2BufferPtr (*DRI2CreateBufferProcPtr)(DrawablePtr pDraw,
- unsigned int attachment,
- unsigned int format);
-typedef void (*DRI2DestroyBufferProcPtr)(DrawablePtr pDraw,
- DRI2BufferPtr buffer);
-/**
- * Get current media stamp counter values
- *
- * This callback is used to support the SGI_video_sync and OML_sync_control
- * extensions.
- *
- * Drivers should return the current frame counter and the timestamp from
- * when the returned frame count was last incremented.
- *
- * The count should correspond to the screen where the drawable is currently
- * visible. If the drawable isn't visible (e.g. redirected), the server
- * should return BadDrawable to the client, pending GLX spec updates to
- * define this behavior.
- *
- * \param pDraw drawable whose count we want
- * \param ust timestamp from when the count was last incremented.
- * \param mst current frame count
- */
-typedef int (*DRI2GetMSCProcPtr)(DrawablePtr pDraw, CARD64 *ust,
- CARD64 *msc);
-/**
- * Schedule a frame count related wait
- *
- * This callback is used to support the SGI_video_sync and OML_sync_control
- * extensions. See those specifications for details on how to handle
- * the divisor and remainder parameters.
- *
- * Drivers should queue an event for the frame count that satisfies the
- * parameters passed in. If the event is in the future (i.e. the conditions
- * aren't currently satisfied), the driver should block the client using
- * \c DRI2BlockClient. When the event arrives, drivers should call
- * \c DRI2WaitMSCComplete, which will handle waking the client and returning
- * the appropriate data.
- *
- * \param client client pointer (used for block/unblock)
- * \param pDraw drawable whose count we want
- * \param target_msc frame count to wait for
- * \param divisor divisor for condition equation
- * \param remainder remainder for division equation
- */
-typedef int (*DRI2ScheduleWaitMSCProcPtr)(ClientPtr client,
- DrawablePtr pDraw,
- CARD64 target_msc,
- CARD64 divisor,
- CARD64 remainder);
-/**
- * Version of the DRI2InfoRec structure defined in this header
- */
-#define DRI2INFOREC_VERSION 4
-
-typedef struct {
- unsigned int version; /**< Version of this struct */
- int fd;
- const char *driverName;
- const char *deviceName;
-
- DRI2CreateBufferProcPtr CreateBuffer;
- DRI2DestroyBufferProcPtr DestroyBuffer;
- DRI2CopyRegionProcPtr CopyRegion;
- DRI2WaitProcPtr Wait;
-
- /* added in version 4 */
-
- DRI2ScheduleSwapProcPtr ScheduleSwap;
- DRI2GetMSCProcPtr GetMSC;
- DRI2ScheduleWaitMSCProcPtr ScheduleWaitMSC;
-
- /* number of drivers in the driverNames array */
- unsigned int numDrivers;
- /* array of driver names, indexed by DRI2Driver* driver types */
- /* a name of NULL means that driver is not supported */
- const char * const *driverNames;
-} DRI2InfoRec, *DRI2InfoPtr;
-
-extern _X_EXPORT int DRI2EventBase;
-
-extern _X_EXPORT Bool DRI2ScreenInit(ScreenPtr pScreen,
- DRI2InfoPtr info);
-
-extern _X_EXPORT void DRI2CloseScreen(ScreenPtr pScreen);
-
-extern _X_EXPORT Bool DRI2Connect(ScreenPtr pScreen,
- unsigned int driverType,
- int *fd,
- const char **driverName,
- const char **deviceName);
-
-extern _X_EXPORT Bool DRI2Authenticate(ScreenPtr pScreen, drm_magic_t magic);
-
-extern _X_EXPORT int DRI2CreateDrawable(DrawablePtr pDraw);
-
-extern _X_EXPORT void DRI2DestroyDrawable(DrawablePtr pDraw);
-
-extern _X_EXPORT DRI2BufferPtr *DRI2GetBuffers(DrawablePtr pDraw,
- int *width,
- int *height,
- unsigned int *attachments,
- int count,
- int *out_count);
-
-extern _X_EXPORT int DRI2CopyRegion(DrawablePtr pDraw,
- RegionPtr pRegion,
- unsigned int dest,
- unsigned int src);
-
-/**
- * Determine the major and minor version of the DRI2 extension.
- *
- * Provides a mechanism to other modules (e.g., 2D drivers) to determine the
- * version of the DRI2 extension. While it is possible to peek directly at
- * the \c XF86ModuleData from a layered module, such a module will fail to
- * load (due to an unresolved symbol) if the DRI2 extension is not loaded.
- *
- * \param major Location to store the major verion of the DRI2 extension
- * \param minor Location to store the minor verion of the DRI2 extension
- *
- * \note
- * This interface was added some time after the initial release of the DRI2
- * module. Layered modules that wish to use this interface must first test
- * its existance by calling \c xf86LoaderCheckSymbol.
- */
-extern _X_EXPORT void DRI2Version(int *major, int *minor);
-
-extern _X_EXPORT DRI2BufferPtr *DRI2GetBuffersWithFormat(DrawablePtr pDraw,
- int *width, int *height, unsigned int *attachments, int count,
- int *out_count);
-
-extern _X_EXPORT void DRI2SwapInterval(DrawablePtr pDrawable, int interval);
-extern _X_EXPORT int DRI2SwapBuffers(ClientPtr client, DrawablePtr pDrawable,
- CARD64 target_msc, CARD64 divisor,
- CARD64 remainder, CARD64 *swap_target,
- DRI2SwapEventPtr func, void *data);
-extern _X_EXPORT Bool DRI2WaitSwap(ClientPtr client, DrawablePtr pDrawable);
-
-extern _X_EXPORT int DRI2GetMSC(DrawablePtr pDrawable, CARD64 *ust,
- CARD64 *msc, CARD64 *sbc);
-extern _X_EXPORT int DRI2WaitMSC(ClientPtr client, DrawablePtr pDrawable,
- CARD64 target_msc, CARD64 divisor,
- CARD64 remainder);
-extern _X_EXPORT int ProcDRI2WaitMSCReply(ClientPtr client, CARD64 ust,
- CARD64 msc, CARD64 sbc);
-extern _X_EXPORT int DRI2WaitSBC(ClientPtr client, DrawablePtr pDraw,
- CARD64 target_sbc, CARD64 *ust, CARD64 *msc,
- CARD64 *sbc);
-extern _X_EXPORT Bool DRI2ThrottleClient(ClientPtr client, DrawablePtr pDraw);
-
-extern _X_EXPORT Bool DRI2CanFlip(DrawablePtr pDraw);
-
-extern _X_EXPORT Bool DRI2CanExchange(DrawablePtr pDraw);
-
-extern _X_EXPORT void DRI2BlockClient(ClientPtr client, DrawablePtr pDraw);
-
-extern _X_EXPORT void DRI2SwapComplete(ClientPtr client, DrawablePtr pDraw,
- int frame, unsigned int tv_sec,
- unsigned int tv_usec, int type,
- DRI2SwapEventPtr swap_complete,
- void *swap_data);
-extern _X_EXPORT void DRI2WaitMSCComplete(ClientPtr client, DrawablePtr pDraw,
- int frame, unsigned int tv_sec,
- unsigned int tv_usec);
-
-#endif
+/* + * Copyright © 2007 Red Hat, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Soft- + * ware"), to deal in the Software without restriction, including without + * limitation the rights to use, copy, modify, merge, publish, distribute, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, provided that the above copyright + * notice(s) and this permission notice appear in all copies of the Soft- + * ware and that both the above copyright notice(s) and this permission + * notice appear in supporting documentation. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL- + * ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY + * RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN + * THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSE- + * QUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFOR- + * MANCE OF THIS SOFTWARE. + * + * Except as contained in this notice, the name of a copyright holder shall + * not be used in advertising or otherwise to promote the sale, use or + * other dealings in this Software without prior written authorization of + * the copyright holder. + * + * Authors: + * Kristian Høgsberg (krh@redhat.com) + */ + +#ifndef _DRI2_H_ +#define _DRI2_H_ + +#include <X11/extensions/dri2tokens.h> + +/* Version 2 structure (with format at the end) */ +typedef struct { + unsigned int attachment; + unsigned int name; + unsigned int pitch; + unsigned int cpp; + unsigned int flags; + unsigned int format; + void *driverPrivate; +} DRI2BufferRec, *DRI2BufferPtr; + +extern CARD8 dri2_major; /* version of DRI2 supported by DDX */ +extern CARD8 dri2_minor; + +typedef DRI2BufferRec DRI2Buffer2Rec, *DRI2Buffer2Ptr; +typedef void (*DRI2SwapEventPtr)(ClientPtr client, void *data, int type, + CARD64 ust, CARD64 msc, CARD64 sbc); + + +typedef DRI2BufferPtr (*DRI2CreateBuffersProcPtr)(DrawablePtr pDraw, + unsigned int *attachments, + int count); +typedef void (*DRI2DestroyBuffersProcPtr)(DrawablePtr pDraw, + DRI2BufferPtr buffers, + int count); +typedef void (*DRI2CopyRegionProcPtr)(DrawablePtr pDraw, + RegionPtr pRegion, + DRI2BufferPtr pDestBuffer, + DRI2BufferPtr pSrcBuffer); +typedef void (*DRI2WaitProcPtr)(WindowPtr pWin, + unsigned int sequence); +/** + * Schedule a buffer swap + * + * This callback is used to support glXSwapBuffers and the OML_sync_control + * extension (see it for a description of the params). + * + * Drivers should queue an event for the frame count that satisfies the + * parameters passed in. If the event is in the future (i.e. the conditions + * aren't currently satisfied), the server may block the client at the next + * GLX request using DRI2WaitSwap. When the event arrives, drivers should call + * \c DRI2SwapComplete, which will handle waking the client and returning + * the appropriate data. + * + * The DDX is responsible for doing a flip, exchange, or blit of the swap + * when the corresponding event arrives. The \c DRI2CanFlip and + * \c DRI2CanExchange functions can be used as helpers for this purpose. + * + * \param client client pointer (used for block/unblock) + * \param pDraw drawable whose count we want + * \param pDestBuffer current front buffer + * \param pSrcBuffer current back buffer + * \param target_msc frame count to wait for + * \param divisor divisor for condition equation + * \param remainder remainder for division equation + * \param func function to call when the swap completes + * \param data data for the callback \p func. + */ +typedef int (*DRI2ScheduleSwapProcPtr)(ClientPtr client, + DrawablePtr pDraw, + DRI2BufferPtr pDestBuffer, + DRI2BufferPtr pSrcBuffer, + CARD64 *target_msc, + CARD64 divisor, + CARD64 remainder, + DRI2SwapEventPtr func, + void *data); +typedef DRI2BufferPtr (*DRI2CreateBufferProcPtr)(DrawablePtr pDraw, + unsigned int attachment, + unsigned int format); +typedef void (*DRI2DestroyBufferProcPtr)(DrawablePtr pDraw, + DRI2BufferPtr buffer); +/** + * Get current media stamp counter values + * + * This callback is used to support the SGI_video_sync and OML_sync_control + * extensions. + * + * Drivers should return the current frame counter and the timestamp from + * when the returned frame count was last incremented. + * + * The count should correspond to the screen where the drawable is currently + * visible. If the drawable isn't visible (e.g. redirected), the server + * should return BadDrawable to the client, pending GLX spec updates to + * define this behavior. + * + * \param pDraw drawable whose count we want + * \param ust timestamp from when the count was last incremented. + * \param mst current frame count + */ +typedef int (*DRI2GetMSCProcPtr)(DrawablePtr pDraw, CARD64 *ust, + CARD64 *msc); +/** + * Schedule a frame count related wait + * + * This callback is used to support the SGI_video_sync and OML_sync_control + * extensions. See those specifications for details on how to handle + * the divisor and remainder parameters. + * + * Drivers should queue an event for the frame count that satisfies the + * parameters passed in. If the event is in the future (i.e. the conditions + * aren't currently satisfied), the driver should block the client using + * \c DRI2BlockClient. When the event arrives, drivers should call + * \c DRI2WaitMSCComplete, which will handle waking the client and returning + * the appropriate data. + * + * \param client client pointer (used for block/unblock) + * \param pDraw drawable whose count we want + * \param target_msc frame count to wait for + * \param divisor divisor for condition equation + * \param remainder remainder for division equation + */ +typedef int (*DRI2ScheduleWaitMSCProcPtr)(ClientPtr client, + DrawablePtr pDraw, + CARD64 target_msc, + CARD64 divisor, + CARD64 remainder); +/** + * Version of the DRI2InfoRec structure defined in this header + */ +#define DRI2INFOREC_VERSION 4 + +typedef struct { + unsigned int version; /**< Version of this struct */ + int fd; + const char *driverName; + const char *deviceName; + + DRI2CreateBufferProcPtr CreateBuffer; + DRI2DestroyBufferProcPtr DestroyBuffer; + DRI2CopyRegionProcPtr CopyRegion; + DRI2WaitProcPtr Wait; + + /* added in version 4 */ + + DRI2ScheduleSwapProcPtr ScheduleSwap; + DRI2GetMSCProcPtr GetMSC; + DRI2ScheduleWaitMSCProcPtr ScheduleWaitMSC; + + /* number of drivers in the driverNames array */ + unsigned int numDrivers; + /* array of driver names, indexed by DRI2Driver* driver types */ + /* a name of NULL means that driver is not supported */ + const char * const *driverNames; +} DRI2InfoRec, *DRI2InfoPtr; + +extern _X_EXPORT int DRI2EventBase; + +extern _X_EXPORT Bool DRI2ScreenInit(ScreenPtr pScreen, + DRI2InfoPtr info); + +extern _X_EXPORT void DRI2CloseScreen(ScreenPtr pScreen); + +extern _X_EXPORT Bool DRI2HasSwapControl(ScreenPtr pScreen); + +extern _X_EXPORT Bool DRI2Connect(ScreenPtr pScreen, + unsigned int driverType, + int *fd, + const char **driverName, + const char **deviceName); + +extern _X_EXPORT Bool DRI2Authenticate(ScreenPtr pScreen, drm_magic_t magic); + +extern _X_EXPORT int DRI2CreateDrawable(DrawablePtr pDraw); + +extern _X_EXPORT void DRI2DestroyDrawable(DrawablePtr pDraw); + +extern _X_EXPORT DRI2BufferPtr *DRI2GetBuffers(DrawablePtr pDraw, + int *width, + int *height, + unsigned int *attachments, + int count, + int *out_count); + +extern _X_EXPORT int DRI2CopyRegion(DrawablePtr pDraw, + RegionPtr pRegion, + unsigned int dest, + unsigned int src); + +/** + * Determine the major and minor version of the DRI2 extension. + * + * Provides a mechanism to other modules (e.g., 2D drivers) to determine the + * version of the DRI2 extension. While it is possible to peek directly at + * the \c XF86ModuleData from a layered module, such a module will fail to + * load (due to an unresolved symbol) if the DRI2 extension is not loaded. + * + * \param major Location to store the major verion of the DRI2 extension + * \param minor Location to store the minor verion of the DRI2 extension + * + * \note + * This interface was added some time after the initial release of the DRI2 + * module. Layered modules that wish to use this interface must first test + * its existance by calling \c xf86LoaderCheckSymbol. + */ +extern _X_EXPORT void DRI2Version(int *major, int *minor); + +extern _X_EXPORT DRI2BufferPtr *DRI2GetBuffersWithFormat(DrawablePtr pDraw, + int *width, int *height, unsigned int *attachments, int count, + int *out_count); + +extern _X_EXPORT void DRI2SwapInterval(DrawablePtr pDrawable, int interval); +extern _X_EXPORT int DRI2SwapBuffers(ClientPtr client, DrawablePtr pDrawable, + CARD64 target_msc, CARD64 divisor, + CARD64 remainder, CARD64 *swap_target, + DRI2SwapEventPtr func, void *data); +extern _X_EXPORT Bool DRI2WaitSwap(ClientPtr client, DrawablePtr pDrawable); + +extern _X_EXPORT int DRI2GetMSC(DrawablePtr pDrawable, CARD64 *ust, + CARD64 *msc, CARD64 *sbc); +extern _X_EXPORT int DRI2WaitMSC(ClientPtr client, DrawablePtr pDrawable, + CARD64 target_msc, CARD64 divisor, + CARD64 remainder); +extern _X_EXPORT int ProcDRI2WaitMSCReply(ClientPtr client, CARD64 ust, + CARD64 msc, CARD64 sbc); +extern _X_EXPORT int DRI2WaitSBC(ClientPtr client, DrawablePtr pDraw, + CARD64 target_sbc, CARD64 *ust, CARD64 *msc, + CARD64 *sbc); +extern _X_EXPORT Bool DRI2ThrottleClient(ClientPtr client, DrawablePtr pDraw); + +extern _X_EXPORT Bool DRI2CanFlip(DrawablePtr pDraw); + +extern _X_EXPORT Bool DRI2CanExchange(DrawablePtr pDraw); + +/* Note: use *only* for MSC related waits */ +extern _X_EXPORT void DRI2BlockClient(ClientPtr client, DrawablePtr pDraw); + +extern _X_EXPORT void DRI2SwapComplete(ClientPtr client, DrawablePtr pDraw, + int frame, unsigned int tv_sec, + unsigned int tv_usec, int type, + DRI2SwapEventPtr swap_complete, + void *swap_data); +extern _X_EXPORT void DRI2WaitMSCComplete(ClientPtr client, DrawablePtr pDraw, + int frame, unsigned int tv_sec, + unsigned int tv_usec); + +#endif diff --git a/xorg-server/hw/xfree86/dri2/dri2ext.c b/xorg-server/hw/xfree86/dri2/dri2ext.c index bd92fd304..094d54dc0 100644 --- a/xorg-server/hw/xfree86/dri2/dri2ext.c +++ b/xorg-server/hw/xfree86/dri2/dri2ext.c @@ -80,8 +80,8 @@ ProcDRI2QueryVersion(ClientPtr client) rep.type = X_Reply; rep.length = 0; rep.sequenceNumber = client->sequence; - rep.majorVersion = SERVER_DRI2_MAJOR_VERSION; - rep.minorVersion = SERVER_DRI2_MINOR_VERSION; + rep.majorVersion = dri2_major; + rep.minorVersion = dri2_minor; if (client->swapped) { swaps(&rep.sequenceNumber, n); @@ -384,6 +384,13 @@ ProcDRI2SwapBuffers(ClientPtr client) DixReadAccess | DixWriteAccess, &pDrawable, &status)) return status; + /* + * Ensures an out of control client can't exhaust our swap queue, and + * also orders swaps. + */ + if (DRI2ThrottleClient(client, pDrawable)) + return client->noClientException; + target_msc = vals_to_card64(stuff->target_msc_lo, stuff->target_msc_hi); divisor = vals_to_card64(stuff->divisor_lo, stuff->divisor_hi); remainder = vals_to_card64(stuff->remainder_lo, stuff->remainder_hi); diff --git a/xorg-server/hw/xfree86/parser/Makefile.am b/xorg-server/hw/xfree86/parser/Makefile.am index 49c191f2a..caf7079d4 100644 --- a/xorg-server/hw/xfree86/parser/Makefile.am +++ b/xorg-server/hw/xfree86/parser/Makefile.am @@ -34,7 +34,9 @@ libxf86config_a_SOURCES = \ $(INTERNAL_SOURCES) libxf86config_a_CFLAGS = $(AM_CFLAGS) -AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS) +AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS) \ + -DSYSCONFDIR=\"$(sysconfdir)\" \ + -DDATADIR=\"$(datadir)\" EXTRA_DIST = \ Configint.h \ diff --git a/xorg-server/hw/xfree86/parser/scan.c b/xorg-server/hw/xfree86/parser/scan.c index cdca9ca1c..8aab0cf41 100644 --- a/xorg-server/hw/xfree86/parser/scan.c +++ b/xorg-server/hw/xfree86/parser/scan.c @@ -599,6 +599,8 @@ xf86pathIsSafe(const char *path) * %F config file environment ($XORGCONFIG) as a relative path * %G config file environment ($XORGCONFIG) as a safe path * %P projroot + * %C sysconfdir + * %D datadir * %M major version number * %% % */ @@ -615,6 +617,12 @@ xf86pathIsSafe(const char *path) #ifndef PROJECTROOT #define PROJECTROOT "/usr/X11R6" #endif +#ifndef SYSCONFDIR +#define SYSCONFDIR PROJECTROOT "/etc" +#endif +#ifndef DATADIR +#define DATADIR PROJECTROOT "/share" +#endif #ifndef XCONFENV #define XCONFENV "XORGCONFIG" #endif @@ -755,6 +763,12 @@ DoSubstitution(const char *template, const char *cmdline, const char *projroot, else BAIL_OUT; break; + case 'C': + APPEND_STR(SYSCONFDIR); + break; + case 'D': + APPEND_STR(DATADIR); + break; case 'M': if (!majorvers[0]) { if (XF86_VERSION_MAJOR < 0 || XF86_VERSION_MAJOR > 99) { diff --git a/xorg-server/hw/xfree86/ramdac/xf86Cursor.c b/xorg-server/hw/xfree86/ramdac/xf86Cursor.c index 7f23d9ef3..f5f087314 100644 --- a/xorg-server/hw/xfree86/ramdac/xf86Cursor.c +++ b/xorg-server/hw/xfree86/ramdac/xf86Cursor.c @@ -312,6 +312,7 @@ xf86CursorSetCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCurs, xf86SetCursor(pScreen, NullCursor, x, y); ScreenPriv->isUp = FALSE; } + ScreenPriv->CurrentCursor = NullCursor; return; } diff --git a/xorg-server/hw/xfree86/x86emu/x86emu/types.h b/xorg-server/hw/xfree86/x86emu/x86emu/types.h index c18e11cfb..fa23800d0 100644 --- a/xorg-server/hw/xfree86/x86emu/x86emu/types.h +++ b/xorg-server/hw/xfree86/x86emu/x86emu/types.h @@ -61,45 +61,21 @@ /*---------------------- Macros and type definitions ----------------------*/ -/* Currently only for Linux/32bit */ -#undef __HAS_LONG_LONG__ -#if defined(__GNUC__) && !defined(NO_LONG_LONG) -#define __HAS_LONG_LONG__ -#endif - -/* Taken from Xmd.h */ -#undef NUM32 -#if defined (_LP64) || \ - defined(__alpha) || defined(__alpha__) || \ - defined(__ia64__) || defined(ia64) || \ - defined(__sparc64__) || \ - defined(__s390x__) || \ - defined(__hppa__) && defined(__LP64) || \ - defined(__amd64__) || defined(amd64) -#define NUM32 int -#else -#define NUM32 long -#endif +#include <stdint.h> -typedef unsigned char u8; -typedef unsigned short u16; -typedef unsigned NUM32 u32; -#ifdef __HAS_LONG_LONG__ -typedef unsigned long long u64; -#endif +typedef uint8_t u8; +typedef uint16_t u16; +typedef uint32_t u32; +typedef uint64_t u64; -typedef char s8; -typedef short s16; -typedef NUM32 s32; -#ifdef __HAS_LONG_LONG__ -typedef long long s64; -#endif +typedef int8_t s8; +typedef int16_t s16; +typedef int32_t s32; +typedef int64_t s64; typedef unsigned int uint; typedef int sint; typedef u16 X86EMU_pioAddr; -#undef NUM32 - #endif /* __X86EMU_TYPES_H */ diff --git a/xorg-server/hw/xquartz/GL/glcontextmodes.c b/xorg-server/hw/xquartz/GL/glcontextmodes.c new file mode 100644 index 000000000..326c8b235 --- /dev/null +++ b/xorg-server/hw/xquartz/GL/glcontextmodes.c @@ -0,0 +1,550 @@ +/* + * (C) Copyright IBM Corporation 2003 + * 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 + * on 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 + * VA LINUX SYSTEM, IBM AND/OR THEIR 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. + */ + +/** + * \file glcontextmodes.c + * Utility routines for working with \c __GLcontextModes structures. At + * some point most or all of these functions will be moved to the Mesa + * code base. + * + * \author Ian Romanick <idr@us.ibm.com> + */ + +#if defined(IN_MINI_GLX) +#include <GL/gl.h> +#else +#if defined(HAVE_DIX_CONFIG_H) +# include <dix-config.h> +#endif +#include <X11/X.h> +#include <GL/glx.h> +#include "GL/glxint.h" +#endif + +/* Memory macros */ +#if defined(IN_MINI_GLX) +# include <stdlib.h> +# include <string.h> +# define _mesa_malloc(b) malloc(b) +# define _mesa_free(m) free(m) +# define _mesa_memset memset +#else +# ifdef XFree86Server +# include <os.h> +# include <string.h> +# define _mesa_malloc(b) xalloc(b) +# define _mesa_free(m) xfree(m) +# define _mesa_memset memset +# else +# include <X11/Xlibint.h> +# define _mesa_memset memset +# define _mesa_malloc(b) Xmalloc(b) +# define _mesa_free(m) Xfree(m) +# endif /* XFree86Server */ +#endif /* !defined(IN_MINI_GLX) */ + +#include "glcontextmodes.h" + +#if !defined(IN_MINI_GLX) +#define NUM_VISUAL_TYPES 6 + +/** + * Convert an X visual type to a GLX visual type. + * + * \param visualType X visual type (i.e., \c TrueColor, \c StaticGray, etc.) + * to be converted. + * \return If \c visualType is a valid X visual type, a GLX visual type will + * be returned. Otherwise \c GLX_NONE will be returned. + */ +GLint +_gl_convert_from_x_visual_type( int visualType ) +{ + static const int glx_visual_types[ NUM_VISUAL_TYPES ] = { + GLX_STATIC_GRAY, GLX_GRAY_SCALE, + GLX_STATIC_COLOR, GLX_PSEUDO_COLOR, + GLX_TRUE_COLOR, GLX_DIRECT_COLOR + }; + + return ( (unsigned) visualType < NUM_VISUAL_TYPES ) + ? glx_visual_types[ visualType ] : GLX_NONE; +} + + +/** + * Convert a GLX visual type to an X visual type. + * + * \param visualType GLX visual type (i.e., \c GLX_TRUE_COLOR, + * \c GLX_STATIC_GRAY, etc.) to be converted. + * \return If \c visualType is a valid GLX visual type, an X visual type will + * be returned. Otherwise -1 will be returned. + */ +GLint +_gl_convert_to_x_visual_type( int visualType ) +{ + static const int x_visual_types[ NUM_VISUAL_TYPES ] = { + TrueColor, DirectColor, + PseudoColor, StaticColor, + GrayScale, StaticGray + }; + + return ( (unsigned) (visualType - GLX_TRUE_COLOR) < NUM_VISUAL_TYPES ) + ? x_visual_types[ visualType - GLX_TRUE_COLOR ] : -1; +} + + +/** + * Copy a GLX visual config structure to a GL context mode structure. All + * of the fields in \c config are copied to \c mode. Additional fields in + * \c mode that can be derrived from the fields of \c config (i.e., + * \c haveDepthBuffer) are also filled in. The remaining fields in \c mode + * that cannot be derived are set to default values. + * + * \param mode Destination GL context mode. + * \param config Source GLX visual config. + * + * \note + * The \c fbconfigID and \c visualID fields of the \c __GLcontextModes + * structure will be set to the \c vid of the \c __GLXvisualConfig structure. + */ +void +_gl_copy_visual_to_context_mode( __GLcontextModes * mode, + const __GLXvisualConfig * config ) +{ + __GLcontextModes * const next = mode->next; + + (void) _mesa_memset( mode, 0, sizeof( __GLcontextModes ) ); + mode->next = next; + + mode->visualID = config->vid; + mode->visualType = _gl_convert_from_x_visual_type( config->class ); + mode->xRenderable = GL_TRUE; + mode->fbconfigID = config->vid; + mode->drawableType = GLX_WINDOW_BIT | GLX_PIXMAP_BIT; + + mode->rgbMode = (config->rgba != 0); + mode->renderType = (mode->rgbMode) ? GLX_RGBA_BIT : GLX_COLOR_INDEX_BIT; + + mode->colorIndexMode = !(mode->rgbMode); + mode->doubleBufferMode = (config->doubleBuffer != 0); + mode->stereoMode = (config->stereo != 0); + + mode->haveAccumBuffer = ((config->accumRedSize + + config->accumGreenSize + + config->accumBlueSize + + config->accumAlphaSize) > 0); + mode->haveDepthBuffer = (config->depthSize > 0); + mode->haveStencilBuffer = (config->stencilSize > 0); + + mode->redBits = config->redSize; + mode->greenBits = config->greenSize; + mode->blueBits = config->blueSize; + mode->alphaBits = config->alphaSize; + mode->redMask = config->redMask; + mode->greenMask = config->greenMask; + mode->blueMask = config->blueMask; + mode->alphaMask = config->alphaMask; + mode->rgbBits = mode->rgbMode ? config->bufferSize : 0; + mode->indexBits = mode->colorIndexMode ? config->bufferSize : 0; + + mode->accumRedBits = config->accumRedSize; + mode->accumGreenBits = config->accumGreenSize; + mode->accumBlueBits = config->accumBlueSize; + mode->accumAlphaBits = config->accumAlphaSize; + mode->depthBits = config->depthSize; + mode->stencilBits = config->stencilSize; + + mode->numAuxBuffers = config->auxBuffers; + mode->level = config->level; + + mode->visualRating = config->visualRating; + mode->transparentPixel = config->transparentPixel; + mode->transparentRed = config->transparentRed; + mode->transparentGreen = config->transparentGreen; + mode->transparentBlue = config->transparentBlue; + mode->transparentAlpha = config->transparentAlpha; + mode->transparentIndex = config->transparentIndex; + mode->samples = config->multiSampleSize; + mode->sampleBuffers = config->nMultiSampleBuffers; + /* mode->visualSelectGroup = config->visualSelectGroup; ? */ + + mode->swapMethod = GLX_SWAP_UNDEFINED_OML; + + mode->bindToTextureRgb = (mode->rgbMode) ? GL_TRUE : GL_FALSE; + mode->bindToTextureRgba = (mode->rgbMode && mode->alphaBits) ? + GL_TRUE : GL_FALSE; + mode->bindToMipmapTexture = mode->rgbMode ? GL_TRUE : GL_FALSE; + mode->bindToTextureTargets = mode->rgbMode ? + GLX_TEXTURE_1D_BIT_EXT | GLX_TEXTURE_2D_BIT_EXT | + GLX_TEXTURE_RECTANGLE_BIT_EXT : 0; + mode->yInverted = GL_FALSE; +} + + +/** + * Get data from a GL context mode. + * + * \param mode GL context mode whose data is to be returned. + * \param attribute Attribute of \c mode that is to be returned. + * \param value_return Location to store the data member of \c mode. + * \return If \c attribute is a valid attribute of \c mode, zero is + * returned. Otherwise \c GLX_BAD_ATTRIBUTE is returned. + */ +int +_gl_get_context_mode_data(const __GLcontextModes *mode, int attribute, + int *value_return) +{ + switch (attribute) { + case GLX_USE_GL: + *value_return = GL_TRUE; + return 0; + case GLX_BUFFER_SIZE: + *value_return = mode->rgbBits; + return 0; + case GLX_RGBA: + *value_return = mode->rgbMode; + return 0; + case GLX_RED_SIZE: + *value_return = mode->redBits; + return 0; + case GLX_GREEN_SIZE: + *value_return = mode->greenBits; + return 0; + case GLX_BLUE_SIZE: + *value_return = mode->blueBits; + return 0; + case GLX_ALPHA_SIZE: + *value_return = mode->alphaBits; + return 0; + case GLX_DOUBLEBUFFER: + *value_return = mode->doubleBufferMode; + return 0; + case GLX_STEREO: + *value_return = mode->stereoMode; + return 0; + case GLX_AUX_BUFFERS: + *value_return = mode->numAuxBuffers; + return 0; + case GLX_DEPTH_SIZE: + *value_return = mode->depthBits; + return 0; + case GLX_STENCIL_SIZE: + *value_return = mode->stencilBits; + return 0; + case GLX_ACCUM_RED_SIZE: + *value_return = mode->accumRedBits; + return 0; + case GLX_ACCUM_GREEN_SIZE: + *value_return = mode->accumGreenBits; + return 0; + case GLX_ACCUM_BLUE_SIZE: + *value_return = mode->accumBlueBits; + return 0; + case GLX_ACCUM_ALPHA_SIZE: + *value_return = mode->accumAlphaBits; + return 0; + case GLX_LEVEL: + *value_return = mode->level; + return 0; + case GLX_TRANSPARENT_TYPE_EXT: + *value_return = mode->transparentPixel; + return 0; + case GLX_TRANSPARENT_RED_VALUE: + *value_return = mode->transparentRed; + return 0; + case GLX_TRANSPARENT_GREEN_VALUE: + *value_return = mode->transparentGreen; + return 0; + case GLX_TRANSPARENT_BLUE_VALUE: + *value_return = mode->transparentBlue; + return 0; + case GLX_TRANSPARENT_ALPHA_VALUE: + *value_return = mode->transparentAlpha; + return 0; + case GLX_TRANSPARENT_INDEX_VALUE: + *value_return = mode->transparentIndex; + return 0; + case GLX_X_VISUAL_TYPE: + *value_return = mode->visualType; + return 0; + case GLX_CONFIG_CAVEAT: + *value_return = mode->visualRating; + return 0; + case GLX_VISUAL_ID: + *value_return = mode->visualID; + return 0; + case GLX_DRAWABLE_TYPE: + *value_return = mode->drawableType; + return 0; + case GLX_RENDER_TYPE: + *value_return = mode->renderType; + return 0; + case GLX_X_RENDERABLE: + *value_return = mode->xRenderable; + return 0; + case GLX_FBCONFIG_ID: + *value_return = mode->fbconfigID; + return 0; + case GLX_MAX_PBUFFER_WIDTH: + *value_return = mode->maxPbufferWidth; + return 0; + case GLX_MAX_PBUFFER_HEIGHT: + *value_return = mode->maxPbufferHeight; + return 0; + case GLX_MAX_PBUFFER_PIXELS: + *value_return = mode->maxPbufferPixels; + return 0; + case GLX_OPTIMAL_PBUFFER_WIDTH_SGIX: + *value_return = mode->optimalPbufferWidth; + return 0; + case GLX_OPTIMAL_PBUFFER_HEIGHT_SGIX: + *value_return = mode->optimalPbufferHeight; + return 0; + case GLX_SWAP_METHOD_OML: + *value_return = mode->swapMethod; + return 0; + case GLX_SAMPLE_BUFFERS_SGIS: + *value_return = mode->sampleBuffers; + return 0; + case GLX_SAMPLES_SGIS: + *value_return = mode->samples; + return 0; + case GLX_BIND_TO_TEXTURE_RGB_EXT: + *value_return = mode->bindToTextureRgb; + return 0; + case GLX_BIND_TO_TEXTURE_RGBA_EXT: + *value_return = mode->bindToTextureRgba; + return 0; + case GLX_BIND_TO_MIPMAP_TEXTURE_EXT: + *value_return = mode->bindToMipmapTexture == GL_TRUE ? GL_TRUE : + GL_FALSE; + return 0; + case GLX_BIND_TO_TEXTURE_TARGETS_EXT: + *value_return = mode->bindToTextureTargets; + return 0; + case GLX_Y_INVERTED_EXT: + *value_return = mode->yInverted; + return 0; + + /* Applications are NOT allowed to query GLX_VISUAL_SELECT_GROUP_SGIX. + * It is ONLY for communication between the GLX client and the GLX + * server. + */ + case GLX_VISUAL_SELECT_GROUP_SGIX: + default: + return GLX_BAD_ATTRIBUTE; + } +} +#endif /* !defined(IN_MINI_GLX) */ + + +/** + * Allocate a linked list of \c __GLcontextModes structures. The fields of + * each structure will be initialized to "reasonable" default values. In + * most cases this is the default value defined by table 3.4 of the GLX + * 1.3 specification. This means that most values are either initialized to + * zero or \c GLX_DONT_CARE (which is -1). As support for additional + * extensions is added, the new values will be initialized to appropriate + * values from the extension specification. + * + * \param count Number of structures to allocate. + * \param minimum_size Minimum size of a structure to allocate. This allows + * for differences in the version of the + * \c __GLcontextModes stucture used in libGL and in a + * DRI-based driver. + * \returns A pointer to the first element in a linked list of \c count + * stuctures on success, or \c NULL on failure. + * + * \warning Use of \c minimum_size does \b not guarantee binary compatibility. + * The fundamental assumption is that if the \c minimum_size + * specified by the driver and the size of the \c __GLcontextModes + * structure in libGL is the same, then the meaning of each byte in + * the structure is the same in both places. \b Be \b careful! + * Basically this means that fields have to be added in libGL and + * then propagated to drivers. Drivers should \b never arbitrarilly + * extend the \c __GLcontextModes data-structure. + */ +__GLcontextModes * +_gl_context_modes_create( unsigned count, size_t minimum_size ) +{ + const size_t size = (minimum_size > sizeof( __GLcontextModes )) + ? minimum_size : sizeof( __GLcontextModes ); + __GLcontextModes * base = NULL; + __GLcontextModes ** next; + unsigned i; + + next = & base; + for ( i = 0 ; i < count ; i++ ) { + *next = (__GLcontextModes *) _mesa_malloc( size ); + if ( *next == NULL ) { + _gl_context_modes_destroy( base ); + base = NULL; + break; + } + + (void) _mesa_memset( *next, 0, size ); + (*next)->visualID = GLX_DONT_CARE; + (*next)->visualType = GLX_DONT_CARE; + (*next)->visualRating = GLX_NONE; + (*next)->transparentPixel = GLX_NONE; + (*next)->transparentRed = GLX_DONT_CARE; + (*next)->transparentGreen = GLX_DONT_CARE; + (*next)->transparentBlue = GLX_DONT_CARE; + (*next)->transparentAlpha = GLX_DONT_CARE; + (*next)->transparentIndex = GLX_DONT_CARE; + (*next)->xRenderable = GLX_DONT_CARE; + (*next)->fbconfigID = GLX_DONT_CARE; + (*next)->swapMethod = GLX_SWAP_UNDEFINED_OML; + (*next)->bindToTextureRgb = GLX_DONT_CARE; + (*next)->bindToTextureRgba = GLX_DONT_CARE; + (*next)->bindToMipmapTexture = GLX_DONT_CARE; + (*next)->bindToTextureTargets = GLX_DONT_CARE; + (*next)->yInverted = GLX_DONT_CARE; + + next = & ((*next)->next); + } + + return base; +} + + +/** + * Destroy a linked list of \c __GLcontextModes structures created by + * \c _gl_context_modes_create. + * + * \param modes Linked list of structures to be destroyed. All structres + * in the list will be freed. + */ +void +_gl_context_modes_destroy( __GLcontextModes * modes ) +{ + while ( modes != NULL ) { + __GLcontextModes * const next = modes->next; + + _mesa_free( modes ); + modes = next; + } +} + + +/** + * Find a context mode matching a Visual ID. + * + * \param modes List list of context-mode structures to be searched. + * \param vid Visual ID to be found. + * \returns A pointer to a context-mode in \c modes if \c vid was found in + * the list, or \c NULL if it was not. + */ + +__GLcontextModes * +_gl_context_modes_find_visual(__GLcontextModes *modes, int vid) +{ + __GLcontextModes *m; + + for (m = modes; m != NULL; m = m->next) + if (m->visualID == vid) + return m; + + return NULL; +} + +__GLcontextModes * +_gl_context_modes_find_fbconfig(__GLcontextModes *modes, int fbid) +{ + __GLcontextModes *m; + + for (m = modes; m != NULL; m = m->next) + if (m->fbconfigID == fbid) + return m; + + return NULL; +} + +/** + * Determine if two context-modes are the same. This is intended to be used + * by libGL implementations to compare to sets of driver generated FBconfigs. + * + * \param a Context-mode to be compared. + * \param b Context-mode to be compared. + * \returns \c GL_TRUE if the two context-modes are the same. \c GL_FALSE is + * returned otherwise. + */ +GLboolean +_gl_context_modes_are_same( const __GLcontextModes * a, + const __GLcontextModes * b ) +{ + return( (a->rgbMode == b->rgbMode) && + (a->floatMode == b->floatMode) && + (a->colorIndexMode == b->colorIndexMode) && + (a->doubleBufferMode == b->doubleBufferMode) && + (a->stereoMode == b->stereoMode) && + (a->redBits == b->redBits) && + (a->greenBits == b->greenBits) && + (a->blueBits == b->blueBits) && + (a->alphaBits == b->alphaBits) && +#if 0 /* For some reason these don't get set on the client-side in libGL. */ + (a->redMask == b->redMask) && + (a->greenMask == b->greenMask) && + (a->blueMask == b->blueMask) && + (a->alphaMask == b->alphaMask) && +#endif + (a->rgbBits == b->rgbBits) && + (a->indexBits == b->indexBits) && + (a->accumRedBits == b->accumRedBits) && + (a->accumGreenBits == b->accumGreenBits) && + (a->accumBlueBits == b->accumBlueBits) && + (a->accumAlphaBits == b->accumAlphaBits) && + (a->depthBits == b->depthBits) && + (a->stencilBits == b->stencilBits) && + (a->numAuxBuffers == b->numAuxBuffers) && + (a->level == b->level) && + (a->pixmapMode == b->pixmapMode) && + (a->visualRating == b->visualRating) && + + (a->transparentPixel == b->transparentPixel) && + + ((a->transparentPixel != GLX_TRANSPARENT_RGB) || + ((a->transparentRed == b->transparentRed) && + (a->transparentGreen == b->transparentGreen) && + (a->transparentBlue == b->transparentBlue) && + (a->transparentAlpha == b->transparentAlpha))) && + + ((a->transparentPixel != GLX_TRANSPARENT_INDEX) || + (a->transparentIndex == b->transparentIndex)) && + + (a->sampleBuffers == b->sampleBuffers) && + (a->samples == b->samples) && + ((a->drawableType & b->drawableType) != 0) && + (a->renderType == b->renderType) && + (a->maxPbufferWidth == b->maxPbufferWidth) && + (a->maxPbufferHeight == b->maxPbufferHeight) && + (a->maxPbufferPixels == b->maxPbufferPixels) && + (a->optimalPbufferWidth == b->optimalPbufferWidth) && + (a->optimalPbufferHeight == b->optimalPbufferHeight) && + (a->swapMethod == b->swapMethod) && + (a->bindToTextureRgb == b->bindToTextureRgb) && + (a->bindToTextureRgba == b->bindToTextureRgba) && + (a->bindToMipmapTexture == b->bindToMipmapTexture) && + (a->bindToTextureTargets == b->bindToTextureTargets) && + (a->yInverted == b->yInverted) ); +} diff --git a/xorg-server/hw/xquartz/GL/glcontextmodes.h b/xorg-server/hw/xquartz/GL/glcontextmodes.h new file mode 100644 index 000000000..afd09cd7f --- /dev/null +++ b/xorg-server/hw/xquartz/GL/glcontextmodes.h @@ -0,0 +1,54 @@ +/* + * (C) Copyright IBM Corporation 2003 + * 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 + * on 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 + * VA LINUX SYSTEM, IBM AND/OR THEIR 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. + */ + +/** + * \file glcontextmodes.h + * \author Ian Romanick <idr@us.ibm.com> + */ + +#ifndef GLCONTEXTMODES_H +#define GLCONTEXTMODES_H + +#include "GL/internal/glcore.h" + +#if !defined(IN_MINI_GLX) +extern GLint _gl_convert_from_x_visual_type( int visualType ); +extern GLint _gl_convert_to_x_visual_type( int visualType ); +extern void _gl_copy_visual_to_context_mode( __GLcontextModes * mode, + const __GLXvisualConfig * config ); +extern int _gl_get_context_mode_data( const __GLcontextModes *mode, + int attribute, int *value_return ); +#endif /* !defined(IN_MINI_GLX) */ + +extern __GLcontextModes * _gl_context_modes_create( unsigned count, + size_t minimum_size ); +extern void _gl_context_modes_destroy( __GLcontextModes * modes ); +extern __GLcontextModes * + _gl_context_modes_find_visual(__GLcontextModes *modes, int vid); +extern __GLcontextModes * + _gl_context_modes_find_fbconfig(__GLcontextModes *modes, int fbid); +extern GLboolean _gl_context_modes_are_same( const __GLcontextModes * a, + const __GLcontextModes * b ); + +#endif /* GLCONTEXTMODES_H */ diff --git a/xorg-server/hw/xquartz/GL/indirect.c b/xorg-server/hw/xquartz/GL/indirect.c index f2af3ffb6..70558ed20 100644 --- a/xorg-server/hw/xquartz/GL/indirect.c +++ b/xorg-server/hw/xquartz/GL/indirect.c @@ -548,7 +548,7 @@ static CGLPixelFormatObj makeFormat(__GLXconfig *conf) { attr[i++] = conf->samples; } - attr[i + 1] = 0; + attr[i] = 0; error = CGLChoosePixelFormat(attr, &fobj, &formats); if(error) { diff --git a/xorg-server/hw/xquartz/X11Application.h b/xorg-server/hw/xquartz/X11Application.h index d7e9a5fa5..ce19e034a 100644 --- a/xorg-server/hw/xquartz/X11Application.h +++ b/xorg-server/hw/xquartz/X11Application.h @@ -90,6 +90,7 @@ extern int quartzHasRoot, quartzEnableRootless, quartzFullscreenMenu; #define PREFS_NO_TCP "nolisten_tcp" #define PREFS_DONE_XINIT_CHECK "done_xinit_check" #define PREFS_NO_QUIT_ALERT "no_quit_alert" +#define PREFS_OPTION_SENDS_ALT "option_sends_alt" #define PREFS_FAKE_BUTTON2 "fake_button2" #define PREFS_FAKE_BUTTON3 "fake_button3" #define PREFS_APPKIT_MODIFIERS "appkit_modifiers" diff --git a/xorg-server/hw/xquartz/X11Application.m b/xorg-server/hw/xquartz/X11Application.m index 54066404e..c9a0d669f 100644 --- a/xorg-server/hw/xquartz/X11Application.m +++ b/xorg-server/hw/xquartz/X11Application.m @@ -712,10 +712,13 @@ static NSMutableArray * cfarray_to_nsarray (CFArrayRef in) { default:quartzEnableRootless]; quartzFullscreenMenu = [self prefs_get_boolean:@PREFS_FULLSCREEN_MENU default:quartzFullscreenMenu]; - quartzFullscreenDisableHotkeys = ![self prefs_get_boolean: - @PREFS_FULLSCREEN_HOTKEYS default:!quartzFullscreenDisableHotkeys]; + quartzFullscreenDisableHotkeys = ![self prefs_get_boolean:@PREFS_FULLSCREEN_HOTKEYS + default:!quartzFullscreenDisableHotkeys]; darwinFakeButtons = [self prefs_get_boolean:@PREFS_FAKEBUTTONS default:darwinFakeButtons]; + quartzOptionSendsAlt = [self prefs_get_boolean:@PREFS_OPTION_SENDS_ALT + default:quartzOptionSendsAlt]; + if (darwinFakeButtons) { const char *fake2, *fake3; @@ -969,8 +972,7 @@ void X11ApplicationMain (int argc, char **argv, char **envp) { fprintf(stderr, "X11ApplicationMain: Unable to determine KLGetCurrentKeyboardLayout() at startup.\n"); #endif - memset(keyInfo.keyMap, 0, sizeof(keyInfo.keyMap)); - if (!QuartzReadSystemKeymap(&keyInfo)) { + if (!QuartsResyncKeymap(FALSE)) { fprintf(stderr, "X11ApplicationMain: Could not build a valid keymap.\n"); } @@ -1229,17 +1231,10 @@ static inline int ensure_flag(int flags, int device_independent, int device_depe if(key_layout != last_key_layout) { last_key_layout = key_layout; #endif - /* Update keyInfo */ - pthread_mutex_lock(&keyInfo_mutex); - memset(keyInfo.keyMap, 0, sizeof(keyInfo.keyMap)); - if (!QuartzReadSystemKeymap(&keyInfo)) { + if (!QuartsResyncKeymap(TRUE)) { fprintf(stderr, "sendX11NSEvent: Could not build a valid keymap.\n"); } - pthread_mutex_unlock(&keyInfo_mutex); - - /* Tell server thread to deal with new keyInfo */ - DarwinSendDDXEvent(kXquartzReloadKeymap, 0); } } diff --git a/xorg-server/hw/xquartz/X11Controller.h b/xorg-server/hw/xquartz/X11Controller.h index 9e16f75ce..65a09b8d5 100644 --- a/xorg-server/hw/xquartz/X11Controller.h +++ b/xorg-server/hw/xquartz/X11Controller.h @@ -55,10 +55,9 @@ typedef unsigned int NSUInteger; #endif #endif -#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1060 -@interface X11Controller : NSObject <NSTableViewDataSource> -#else @interface X11Controller : NSObject +#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1060 +<NSTableViewDataSource> #endif { IBOutlet NSPanel *prefs_panel; @@ -69,6 +68,7 @@ typedef unsigned int NSUInteger; IBOutlet NSButton *use_sysbeep; IBOutlet NSButton *enable_keyequivs; IBOutlet NSButton *sync_keymap; + IBOutlet NSButton *option_sends_alt; IBOutlet NSButton *click_through; IBOutlet NSButton *focus_follows_mouse; IBOutlet NSButton *focus_on_new_window; diff --git a/xorg-server/hw/xquartz/X11Controller.m b/xorg-server/hw/xquartz/X11Controller.m index b28f4d303..d66d039b0 100644 --- a/xorg-server/hw/xquartz/X11Controller.m +++ b/xorg-server/hw/xquartz/X11Controller.m @@ -43,6 +43,7 @@ #include "darwin.h" #include "darwinEvents.h" #include "quartz.h" +#include "quartzKeyboard.h" #include <X11/extensions/applewmconst.h> #include "applewmExt.h" @@ -630,49 +631,69 @@ objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row - (IBAction)prefs_changed:sender { - BOOL pbproxy_active; - - darwinFakeButtons = [fake_buttons intValue]; - quartzUseSysBeep = [use_sysbeep intValue]; - X11EnableKeyEquivalents = [enable_keyequivs intValue]; - darwinSyncKeymap = [sync_keymap intValue]; - quartzFullscreenMenu = [enable_fullscreen_menu intValue]; - - /* after adding prefs here, also add to [X11Application read_defaults] - and prefs_show */ - - [NSApp prefs_set_boolean:@PREFS_FAKEBUTTONS value:darwinFakeButtons]; - [NSApp prefs_set_boolean:@PREFS_SYSBEEP value:quartzUseSysBeep]; - [NSApp prefs_set_boolean:@PREFS_KEYEQUIVS value:X11EnableKeyEquivalents]; - [NSApp prefs_set_boolean:@PREFS_SYNC_KEYMAP value:darwinSyncKeymap]; - [NSApp prefs_set_boolean:@PREFS_FULLSCREEN_MENU value:quartzFullscreenMenu]; - [NSApp prefs_set_boolean:@PREFS_CLICK_THROUGH value:[click_through intValue]]; - [NSApp prefs_set_boolean:@PREFS_FFM value:[focus_follows_mouse intValue]]; - [NSApp prefs_set_boolean:@PREFS_FOCUS_ON_NEW_WINDOW value:[focus_on_new_window intValue]]; - [NSApp prefs_set_boolean:@PREFS_NO_AUTH value:![enable_auth intValue]]; - [NSApp prefs_set_boolean:@PREFS_NO_TCP value:![enable_tcp intValue]]; - [NSApp prefs_set_integer:@PREFS_DEPTH value:[depth selectedTag]]; - - pbproxy_active = [sync_pasteboard intValue]; - - [NSApp prefs_set_boolean:@PREFS_SYNC_PB value:pbproxy_active]; - [NSApp prefs_set_boolean:@PREFS_SYNC_PB_TO_CLIPBOARD value:[sync_pasteboard_to_clipboard intValue]]; - [NSApp prefs_set_boolean:@PREFS_SYNC_PB_TO_PRIMARY value:[sync_pasteboard_to_primary intValue]]; - [NSApp prefs_set_boolean:@PREFS_SYNC_CLIPBOARD_TO_PB value:[sync_clipboard_to_pasteboard intValue]]; - [NSApp prefs_set_boolean:@PREFS_SYNC_PRIMARY_ON_SELECT value:[sync_primary_immediately intValue]]; + if(!sender) + return; + + if(sender == fake_buttons) { + darwinFakeButtons = [fake_buttons intValue]; + [NSApp prefs_set_boolean:@PREFS_FAKEBUTTONS value:darwinFakeButtons]; + } else if(sender == use_sysbeep) { + quartzUseSysBeep = [use_sysbeep intValue]; + [NSApp prefs_set_boolean:@PREFS_SYSBEEP value:quartzUseSysBeep]; + } else if(sender == enable_keyequivs) { + X11EnableKeyEquivalents = [enable_keyequivs intValue]; + [NSApp prefs_set_boolean:@PREFS_KEYEQUIVS value:X11EnableKeyEquivalents]; + } else if(sender == sync_keymap) { + darwinSyncKeymap = [sync_keymap intValue]; + [NSApp prefs_set_boolean:@PREFS_SYNC_KEYMAP value:darwinSyncKeymap]; + } else if(sender == enable_fullscreen_menu) { + quartzFullscreenMenu = [enable_fullscreen_menu intValue]; + [NSApp prefs_set_boolean:@PREFS_FULLSCREEN_MENU value:quartzFullscreenMenu]; + } else if(sender == option_sends_alt) { + BOOL prev_opt_sends_alt = quartzOptionSendsAlt; + + quartzOptionSendsAlt = [option_sends_alt intValue]; + [NSApp prefs_set_boolean:@PREFS_OPTION_SENDS_ALT value:quartzOptionSendsAlt]; + + if(prev_opt_sends_alt != quartzOptionSendsAlt) + QuartsResyncKeymap(TRUE); + } else if(sender == click_through) { + [NSApp prefs_set_boolean:@PREFS_CLICK_THROUGH value:[click_through intValue]]; + } else if(sender == focus_follows_mouse) { + [NSApp prefs_set_boolean:@PREFS_FFM value:[focus_follows_mouse intValue]]; + } else if(sender == focus_on_new_window) { + [NSApp prefs_set_boolean:@PREFS_FOCUS_ON_NEW_WINDOW value:[focus_on_new_window intValue]]; + } else if(sender == enable_auth) { + [NSApp prefs_set_boolean:@PREFS_NO_AUTH value:![enable_auth intValue]]; + } else if(sender == enable_tcp) { + [NSApp prefs_set_boolean:@PREFS_NO_TCP value:![enable_tcp intValue]]; + } else if(sender == depth) { + [NSApp prefs_set_integer:@PREFS_DEPTH value:[depth selectedTag]]; + } else if(sender == sync_pasteboard) { + BOOL pbproxy_active = [sync_pasteboard intValue]; + [NSApp prefs_set_boolean:@PREFS_SYNC_PB value:pbproxy_active]; + + [sync_pasteboard_to_clipboard setEnabled:pbproxy_active]; + [sync_pasteboard_to_primary setEnabled:pbproxy_active]; + [sync_clipboard_to_pasteboard setEnabled:pbproxy_active]; + [sync_primary_immediately setEnabled:pbproxy_active]; + + // setEnabled doesn't do this... + [sync_text1 setTextColor:pbproxy_active ? [NSColor controlTextColor] : [NSColor disabledControlTextColor]]; + [sync_text2 setTextColor:pbproxy_active ? [NSColor controlTextColor] : [NSColor disabledControlTextColor]]; + } else if(sender == sync_pasteboard_to_clipboard) { + [NSApp prefs_set_boolean:@PREFS_SYNC_PB_TO_CLIPBOARD value:[sync_pasteboard_to_clipboard intValue]]; + } else if(sender == sync_pasteboard_to_primary) { + [NSApp prefs_set_boolean:@PREFS_SYNC_PB_TO_PRIMARY value:[sync_pasteboard_to_primary intValue]]; + } else if(sender == sync_clipboard_to_pasteboard) { + [NSApp prefs_set_boolean:@PREFS_SYNC_CLIPBOARD_TO_PB value:[sync_clipboard_to_pasteboard intValue]]; + } else if(sender == sync_primary_immediately) { + [NSApp prefs_set_boolean:@PREFS_SYNC_PRIMARY_ON_SELECT value:[sync_primary_immediately intValue]]; + } [NSApp prefs_synchronize]; - - [sync_pasteboard_to_clipboard setEnabled:pbproxy_active]; - [sync_pasteboard_to_primary setEnabled:pbproxy_active]; - [sync_clipboard_to_pasteboard setEnabled:pbproxy_active]; - [sync_primary_immediately setEnabled:pbproxy_active]; - - // setEnabled doesn't do this... - [sync_text1 setTextColor:pbproxy_active ? [NSColor controlTextColor] : [NSColor disabledControlTextColor]]; - [sync_text2 setTextColor:pbproxy_active ? [NSColor controlTextColor] : [NSColor disabledControlTextColor]]; - DarwinSendDDXEvent(kXquartzReloadPreferences, 0); + DarwinSendDDXEvent(kXquartzReloadPreferences, 0); } - (IBAction) prefs_show:sender @@ -683,6 +704,7 @@ objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row [use_sysbeep setIntValue:quartzUseSysBeep]; [enable_keyequivs setIntValue:X11EnableKeyEquivalents]; [sync_keymap setIntValue:darwinSyncKeymap]; + [option_sends_alt setIntValue:quartzOptionSendsAlt]; [click_through setIntValue:[NSApp prefs_get_boolean:@PREFS_CLICK_THROUGH default:NO]]; [focus_follows_mouse setIntValue:[NSApp prefs_get_boolean:@PREFS_FFM default:NO]]; [focus_on_new_window setIntValue:[NSApp prefs_get_boolean:@PREFS_FOCUS_ON_NEW_WINDOW default:YES]]; diff --git a/xorg-server/hw/xquartz/bundle/Resources/Dutch.lproj/Localizable.strings b/xorg-server/hw/xquartz/bundle/Resources/Dutch.lproj/Localizable.strings Binary files differindex 40a843ee7..c36905cb1 100644 --- a/xorg-server/hw/xquartz/bundle/Resources/Dutch.lproj/Localizable.strings +++ b/xorg-server/hw/xquartz/bundle/Resources/Dutch.lproj/Localizable.strings diff --git a/xorg-server/hw/xquartz/bundle/Resources/Dutch.lproj/main.nib/keyedobjects.nib b/xorg-server/hw/xquartz/bundle/Resources/Dutch.lproj/main.nib/keyedobjects.nib Binary files differindex 9209e81fa..0e8eff5dd 100644 --- a/xorg-server/hw/xquartz/bundle/Resources/Dutch.lproj/main.nib/keyedobjects.nib +++ b/xorg-server/hw/xquartz/bundle/Resources/Dutch.lproj/main.nib/keyedobjects.nib diff --git a/xorg-server/hw/xquartz/bundle/Resources/English.lproj/main.nib/designable.nib b/xorg-server/hw/xquartz/bundle/Resources/English.lproj/main.nib/designable.nib index 94d01047c..7609393ba 100644 --- a/xorg-server/hw/xquartz/bundle/Resources/English.lproj/main.nib/designable.nib +++ b/xorg-server/hw/xquartz/bundle/Resources/English.lproj/main.nib/designable.nib @@ -1,29 +1,21 @@ <?xml version="1.0" encoding="UTF-8"?> -<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.03"> +<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00"> <data> - <int key="IBDocument.SystemTarget">1050</int> - <string key="IBDocument.SystemVersion">9L29</string> - <string key="IBDocument.InterfaceBuilderVersion">677</string> - <string key="IBDocument.AppKitVersion">949.54</string> - <string key="IBDocument.HIToolboxVersion">353.00</string> - <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> - <bool key="EncodedWithXMLCoder">YES</bool> + <int key="IBDocument.SystemTarget">1040</int> + <string key="IBDocument.SystemVersion">10D573</string> + <string key="IBDocument.InterfaceBuilderVersion">761</string> + <string key="IBDocument.AppKitVersion">1038.29</string> + <string key="IBDocument.HIToolboxVersion">460.00</string> + <object class="NSMutableDictionary" key="IBDocument.PluginVersions"> + <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="NS.object.0">761</string> </object> - <object class="NSArray" key="IBDocument.PluginDependencies"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="IBDocument.EditedObjectIDs"/> + <array key="IBDocument.PluginDependencies"> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - </object> - <object class="NSMutableDictionary" key="IBDocument.Metadata"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSArray" key="dict.sortedKeys"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - <object class="NSMutableArray" key="dict.values"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - </object> - <object class="NSMutableArray" key="IBDocument.RootObjects" id="904585544"> - <bool key="EncodedWithXMLCoder">YES</bool> + </array> + <dictionary class="NSMutableDictionary" key="IBDocument.Metadata"/> + <array class="NSMutableArray" key="IBDocument.RootObjects" id="904585544"> <object class="NSCustomObject" id="815810918"> <object class="NSMutableString" key="NSClassName"> <characters key="NS.bytes">NSApplication</characters> @@ -37,8 +29,7 @@ </object> <object class="NSMenu" id="524015605"> <string key="NSTitle">MainMenu</string> - <object class="NSMutableArray" key="NSMenuItems"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="NSMenuItems"> <object class="NSMenuItem" id="365880285"> <reference key="NSMenu" ref="524015605"/> <string key="NSTitle">X11</string> @@ -56,8 +47,7 @@ <string key="NSAction">submenuAction:</string> <object class="NSMenu" key="NSSubmenu" id="576521955"> <string key="NSTitle">X11</string> - <object class="NSMutableArray" key="NSMenuItems"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="NSMenuItems"> <object class="NSMenuItem" id="139290918"> <reference key="NSMenu" ref="576521955"/> <string key="NSTitle">About X11</string> @@ -99,9 +89,7 @@ <object class="NSMutableString" key="NSTitle"> <characters key="NS.bytes">Services</characters> </object> - <object class="NSMutableArray" key="NSMenuItems"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> + <array class="NSMutableArray" key="NSMenuItems"/> <string key="NSName">_NSServicesMenu</string> </object> </object> @@ -185,7 +173,7 @@ <reference key="NSOnImage" ref="531645050"/> <reference key="NSMixedImage" ref="351811234"/> </object> - </object> + </array> <string key="NSName">_NSAppleMenu</string> </object> </object> @@ -200,8 +188,7 @@ <string key="NSAction">submenuAction:</string> <object class="NSMenu" key="NSSubmenu" id="981161348"> <string key="NSTitle">Applications</string> - <object class="NSMutableArray" key="NSMenuItems"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="NSMenuItems"> <object class="NSMenuItem" id="390088328"> <reference key="NSMenu" ref="981161348"/> <bool key="NSIsDisabled">YES</bool> @@ -222,7 +209,7 @@ <reference key="NSOnImage" ref="531645050"/> <reference key="NSMixedImage" ref="351811234"/> </object> - </object> + </array> </object> </object> <object class="NSMenuItem" id="200491363"> @@ -236,8 +223,7 @@ <string key="NSAction">submenuAction:</string> <object class="NSMenu" key="NSSubmenu" id="526778998"> <string key="NSTitle">Edit</string> - <object class="NSMutableArray" key="NSMenuItems"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="NSMenuItems"> <object class="NSMenuItem" id="185296989"> <reference key="NSMenu" ref="526778998"/> <string key="NSTitle">Copy</string> @@ -247,7 +233,7 @@ <reference key="NSOnImage" ref="531645050"/> <reference key="NSMixedImage" ref="351811234"/> </object> - </object> + </array> </object> </object> <object class="NSMenuItem" id="931553638"> @@ -263,8 +249,7 @@ <object class="NSMutableString" key="NSTitle"> <characters key="NS.bytes">Window</characters> </object> - <object class="NSMutableArray" key="NSMenuItems"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="NSMenuItems"> <object class="NSMenuItem" id="984461797"> <reference key="NSMenu" ref="96874957"/> <string key="NSTitle">Close</string> @@ -341,7 +326,7 @@ <reference key="NSOnImage" ref="531645050"/> <reference key="NSMixedImage" ref="351811234"/> </object> - </object> + </array> <string key="NSName">_NSWindowsMenu</string> </object> </object> @@ -356,8 +341,7 @@ <string key="NSAction">submenuAction:</string> <object class="NSMenu" key="NSSubmenu" id="511848303"> <string key="NSTitle">Help</string> - <object class="NSMutableArray" key="NSMenuItems"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="NSMenuItems"> <object class="NSMenuItem" id="504984881"> <reference key="NSMenu" ref="511848303"/> <string key="NSTitle">X11 Help</string> @@ -367,10 +351,10 @@ <reference key="NSOnImage" ref="531645050"/> <reference key="NSMixedImage" ref="351811234"/> </object> - </object> + </array> </object> </object> - </object> + </array> <string key="NSName">_NSMainMenu</string> </object> <object class="NSCustomObject" id="485884620"> @@ -386,20 +370,19 @@ <object class="NSMutableString" key="NSViewClass"> <characters key="NS.bytes">View</characters> </object> - <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string> + <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string> <string key="NSWindowContentMinSize">{320, 240}</string> <object class="NSView" key="NSWindowView" id="941366957"> - <nil key="NSNextResponder"/> + <reference key="NSNextResponder"/> <int key="NSvFlags">256</int> - <object class="NSMutableArray" key="NSSubviews"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="NSSubviews"> <object class="NSTabView" id="448510093"> <reference key="NSNextResponder" ref="941366957"/> <int key="NSvFlags">256</int> <string key="NSFrame">{{13, 10}, {458, 292}}</string> <reference key="NSSuperview" ref="941366957"/> - <object class="NSMutableArray" key="NSTabViewItems"> - <bool key="EncodedWithXMLCoder">YES</bool> + <reference key="NSWindow"/> + <array class="NSMutableArray" key="NSTabViewItems"> <object class="NSTabViewItem" id="287591690"> <object class="NSMutableString" key="NSIdentifier"> <characters key="NS.bytes">1</characters> @@ -407,13 +390,13 @@ <object class="NSView" key="NSView" id="596750588"> <reference key="NSNextResponder" ref="448510093"/> <int key="NSvFlags">256</int> - <object class="NSMutableArray" key="NSSubviews"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="NSSubviews"> <object class="NSButton" id="119157981"> <reference key="NSNextResponder" ref="596750588"/> <int key="NSvFlags">256</int> <string key="NSFrame">{{18, 210}, {402, 18}}</string> <reference key="NSSuperview" ref="596750588"/> + <reference key="NSWindow"/> <bool key="NSEnabled">YES</bool> <object class="NSButtonCell" key="NSCell" id="990762273"> <int key="NSCellFlags">67239424</int> @@ -421,7 +404,7 @@ <string key="NSContents">Emulate three button mouse</string> <object class="NSFont" key="NSSupport" id="463863101"> <string key="NSName">LucidaGrande</string> - <double key="NSSize">1.300000e+01</double> + <double key="NSSize">13</double> <int key="NSfFlags">1044</int> </object> <reference key="NSControlView" ref="119157981"/> @@ -441,6 +424,7 @@ <int key="NSvFlags">256</int> <string key="NSFrame">{{36, 60}, {385, 31}}</string> <reference key="NSSuperview" ref="596750588"/> + <reference key="NSWindow"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="391919450"> <int key="NSCellFlags">67239424</int> @@ -448,7 +432,7 @@ <string key="NSContents">When enabled, menu bar key equivalents may interfere with X11 applications that use the Meta modifier.</string> <object class="NSFont" key="NSSupport" id="26"> <string key="NSName">LucidaGrande</string> - <double key="NSSize">1.100000e+01</double> + <double key="NSSize">11</double> <int key="NSfFlags">3100</int> </object> <reference key="NSControlView" ref="443008216"/> @@ -458,7 +442,7 @@ <string key="NSColorName">controlColor</string> <object class="NSColor" key="NSColor" id="590688762"> <int key="NSColorSpace">3</int> - <bytes key="NSWhite">MC42NjY2NjY2OQA</bytes> + <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes> </object> </object> <object class="NSColor" key="NSTextColor" id="930815747"> @@ -477,6 +461,7 @@ <int key="NSvFlags">256</int> <string key="NSFrame">{{36, 162}, {385, 42}}</string> <reference key="NSSuperview" ref="596750588"/> + <reference key="NSWindow"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="649334366"> <int key="NSCellFlags">67239424</int> @@ -494,6 +479,7 @@ IG9yIHJpZ2h0IG1vdXNlIGJ1dHRvbnMuCg</string> <int key="NSvFlags">256</int> <string key="NSFrame">{{18, 97}, {402, 18}}</string> <reference key="NSSuperview" ref="596750588"/> + <reference key="NSWindow"/> <bool key="NSEnabled">YES</bool> <object class="NSButtonCell" key="NSCell" id="940564599"> <int key="NSCellFlags">67239424</int> @@ -515,6 +501,7 @@ IG9yIHJpZ2h0IG1vdXNlIGJ1dHRvbnMuCg</string> <int key="NSvFlags">256</int> <string key="NSFrame">{{36, 126}, {385, 14}}</string> <reference key="NSSuperview" ref="596750588"/> + <reference key="NSWindow"/> <bool key="NSEnabled">YES</bool> <object class="NSTextFieldCell" key="NSCell" id="666057093"> <int key="NSCellFlags">67239424</int> @@ -531,6 +518,7 @@ IG9yIHJpZ2h0IG1vdXNlIGJ1dHRvbnMuCg</string> <int key="NSvFlags">256</int> <string key="NSFrame">{{18, 146}, {402, 18}}</string> <reference key="NSSuperview" ref="596750588"/> + <reference key="NSWindow"/> <bool key="NSEnabled">YES</bool> <object class="NSButtonCell" key="NSCell" id="967619578"> <int key="NSCellFlags">67239424</int> @@ -547,9 +535,49 @@ IG9yIHJpZ2h0IG1vdXNlIGJ1dHRvbnMuCg</string> <int key="NSPeriodicInterval">25</int> </object> </object> - </object> + <object class="NSTextField" id="278155937"> + <reference key="NSNextResponder" ref="596750588"/> + <int key="NSvFlags">256</int> + <string key="NSFrame">{{36, -1}, {385, 31}}</string> + <reference key="NSSuperview" ref="596750588"/> + <reference key="NSWindow"/> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="617441821"> + <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags2">4194304</int> + <string key="NSContents">When enabled, the option keys send Alt_L and Alt_R X11 key symbols instead of Mode_switch.</string> + <reference key="NSSupport" ref="26"/> + <reference key="NSControlView" ref="278155937"/> + <reference key="NSBackgroundColor" ref="57160303"/> + <reference key="NSTextColor" ref="930815747"/> + </object> + </object> + <object class="NSButton" id="406291430"> + <reference key="NSNextResponder" ref="596750588"/> + <int key="NSvFlags">256</int> + <string key="NSFrame">{{18, 36}, {402, 18}}</string> + <reference key="NSSuperview" ref="596750588"/> + <reference key="NSWindow"/> + <bool key="NSEnabled">YES</bool> + <object class="NSButtonCell" key="NSCell" id="67728988"> + <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags2">0</int> + <string key="NSContents">Option keys send Alt_L and Alt_R</string> + <reference key="NSSupport" ref="463863101"/> + <reference key="NSControlView" ref="406291430"/> + <int key="NSButtonFlags">1211912703</int> + <int key="NSButtonFlags2">2</int> + <reference key="NSAlternateImage" ref="391434389"/> + <string key="NSAlternateContents"/> + <string key="NSKeyEquivalent"/> + <int key="NSPeriodicDelay">200</int> + <int key="NSPeriodicInterval">25</int> + </object> + </object> + </array> <string key="NSFrame">{{10, 33}, {438, 246}}</string> <reference key="NSSuperview" ref="448510093"/> + <reference key="NSWindow"/> </object> <string key="NSLabel">Input</string> <reference key="NSColor" ref="57160303"/> @@ -562,8 +590,7 @@ IG9yIHJpZ2h0IG1vdXNlIGJ1dHRvbnMuCg</string> <object class="NSView" key="NSView" id="515308735"> <nil key="NSNextResponder"/> <int key="NSvFlags">256</int> - <object class="NSMutableArray" key="NSSubviews"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="NSSubviews"> <object class="NSButton" id="418227126"> <reference key="NSNextResponder" ref="515308735"/> <int key="NSvFlags">256</int> @@ -616,7 +643,7 @@ IG9yIHJpZ2h0IG1vdXNlIGJ1dHRvbnMuCg</string> <int key="NSButtonFlags2">1</int> <object class="NSFont" key="NSAlternateImage"> <string key="NSName">LucidaGrande</string> - <double key="NSSize">1.300000e+01</double> + <double key="NSSize">13</double> <int key="NSfFlags">16</int> </object> <object class="NSMutableString" key="NSAlternateContents"> @@ -645,8 +672,7 @@ IG9yIHJpZ2h0IG1vdXNlIGJ1dHRvbnMuCg</string> <object class="NSMutableString" key="NSTitle"> <characters key="NS.bytes">OtherViews</characters> </object> - <object class="NSMutableArray" key="NSMenuItems"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="NSMenuItems"> <reference ref="616492372"/> <object class="NSMenuItem" id="759499526"> <reference key="NSMenu" ref="341113515"/> @@ -684,7 +710,7 @@ IG9yIHJpZ2h0IG1vdXNlIGJ1dHRvbnMuCg</string> <int key="NSTag">24</int> <reference key="NSTarget" ref="633115429"/> </object> - </object> + </array> </object> <int key="NSPreferredEdge">3</int> <bool key="NSUsesItemFromMenu">YES</bool> @@ -701,7 +727,7 @@ IG9yIHJpZ2h0IG1vdXNlIGJ1dHRvbnMuCg</string> <object class="NSTextFieldCell" key="NSCell" id="930265681"> <int key="NSCellFlags">67239424</int> <int key="NSCellFlags2">4194304</int> - <string type="base64-UTF8" key="NSContents">Q29sb3JzOgo</string> + <string key="NSContents">Colors:</string> <reference key="NSSupport" ref="463863101"/> <reference key="NSControlView" ref="201731424"/> <reference key="NSBackgroundColor" ref="57160303"/> @@ -782,7 +808,7 @@ IG9yIHJpZ2h0IG1vdXNlIGJ1dHRvbnMuCg</string> <reference key="NSTextColor" ref="930815747"/> </object> </object> - </object> + </array> <string key="NSFrame">{{10, 33}, {438, 246}}</string> </object> <string key="NSLabel">Output</string> @@ -796,8 +822,7 @@ IG9yIHJpZ2h0IG1vdXNlIGJ1dHRvbnMuCg</string> <object class="NSView" key="NSView" id="408298283"> <nil key="NSNextResponder"/> <int key="NSvFlags">256</int> - <object class="NSMutableArray" key="NSSubviews"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="NSSubviews"> <object class="NSButton" id="878106058"> <reference key="NSNextResponder" ref="408298283"/> <int key="NSvFlags">256</int> @@ -828,9 +853,7 @@ IG9yIHJpZ2h0IG1vdXNlIGJ1dHRvbnMuCg</string> <object class="NSTextFieldCell" key="NSCell" id="572508492"> <int key="NSCellFlags">67239424</int> <int key="NSCellFlags2">4194304</int> - <string type="base64-UTF8" key="NSContents">RW5hYmxlcyB0aGUgImNvcHkiIG1lbnUgaXRlbSBhbmQgYWxsb3dzIGZvciBzeW5jaW5nIGJldHdlZW4g -dGhlIE9TWCBQYXN0ZWJvYXJkIGFuZCB0aGUgWDExIENMSVBCT0FSRCBhbmQgUFJJTUFSWSBidWZmZXJz -Lg</string> + <string key="NSContents">Enables the "copy" menu item and allows for syncing between the OSX Pasteboard and the X11 CLIPBOARD and PRIMARY buffers.</string> <reference key="NSSupport" ref="26"/> <reference key="NSControlView" ref="386152084"/> <reference key="NSBackgroundColor" ref="57160303"/> @@ -953,7 +976,7 @@ Lg</string> <reference key="NSTextColor" ref="930815747"/> </object> </object> - </object> + </array> <string key="NSFrame">{{10, 33}, {438, 246}}</string> </object> <string key="NSLabel">Pasteboard</string> @@ -967,8 +990,7 @@ Lg</string> <object class="NSView" key="NSView" id="184765684"> <nil key="NSNextResponder"/> <int key="NSvFlags">256</int> - <object class="NSMutableArray" key="NSSubviews"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="NSSubviews"> <object class="NSButton" id="657659108"> <reference key="NSNextResponder" ref="184765684"/> <int key="NSvFlags">256</int> @@ -1080,7 +1102,7 @@ Lg</string> <reference key="NSTextColor" ref="930815747"/> </object> </object> - </object> + </array> <string key="NSFrame">{{10, 33}, {438, 246}}</string> </object> <string key="NSLabel">Windows</string> @@ -1091,8 +1113,7 @@ Lg</string> <object class="NSView" key="NSView" id="300811574"> <nil key="NSNextResponder"/> <int key="NSvFlags">256</int> - <object class="NSMutableArray" key="NSSubviews"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="NSSubviews"> <object class="NSButton" id="989050925"> <reference key="NSNextResponder" ref="300811574"/> <int key="NSvFlags">256</int> @@ -1144,9 +1165,7 @@ Lg</string> <object class="NSTextFieldCell" key="NSCell" id="53243865"> <int key="NSCellFlags">67239424</int> <int key="NSCellFlags2">4194304</int> - <string type="base64-UTF8" key="NSContents">TGF1bmNoaW5nIFgxMSB3aWxsIGNyZWF0ZSBYYXV0aG9yaXR5IGFjY2Vzcy1jb250cm9sIGtleXMuIElm -IHRoZSBzeXN0ZW0ncyBJUCBhZGRyZXNzIGNoYW5nZXMsIHRoZXNlIGtleXMgYmVjb21lIGludmFsaWQg -d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string> + <string key="NSContents">Launching X11 will create Xauthority access-control keys. If the system's IP address changes, these keys become invalid which may prevent X11 applications from launching.</string> <reference key="NSSupport" ref="26"/> <reference key="NSControlView" ref="168436707"/> <reference key="NSBackgroundColor" ref="57160303"/> @@ -1185,30 +1204,31 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string> <reference key="NSTextColor" ref="930815747"/> </object> </object> - </object> + </array> <string key="NSFrame">{{10, 33}, {438, 246}}</string> </object> <string key="NSLabel">Security</string> <reference key="NSColor" ref="57160303"/> <reference key="NSTabView" ref="448510093"/> </object> - </object> + </array> <reference key="NSSelectedTabViewItem" ref="287591690"/> <reference key="NSFont" ref="463863101"/> <int key="NSTvFlags">0</int> <bool key="NSAllowTruncatedLabels">YES</bool> <bool key="NSDrawsBackground">YES</bool> - <object class="NSMutableArray" key="NSSubviews"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="NSSubviews"> <reference ref="596750588"/> - </object> + </array> </object> - </object> + </array> <string key="NSFrameSize">{484, 308}</string> + <reference key="NSSuperview"/> + <reference key="NSWindow"/> </object> <string key="NSScreenRect">{{0, 0}, {1280, 938}}</string> <string key="NSMinSize">{320, 262}</string> - <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string> + <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string> <string key="NSFrameAutosaveName">x11_prefs</string> </object> <object class="NSWindowTemplate" id="604417141"> @@ -1221,13 +1241,12 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string> <object class="NSMutableString" key="NSViewClass"> <characters key="NS.bytes">View</characters> </object> - <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string> + <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string> <string key="NSWindowContentMinSize">{320, 240}</string> <object class="NSView" key="NSWindowView" id="85544634"> <nil key="NSNextResponder"/> <int key="NSvFlags">256</int> - <object class="NSMutableArray" key="NSSubviews"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="NSSubviews"> <object class="NSButton" id="671954382"> <reference key="NSNextResponder" ref="85544634"/> <int key="NSvFlags">265</int> @@ -1244,7 +1263,7 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string> <int key="NSButtonFlags2">1</int> <object class="NSFont" key="NSAlternateImage" id="549406736"> <string key="NSName">Helvetica</string> - <double key="NSSize">1.300000e+01</double> + <double key="NSSize">13</double> <int key="NSfFlags">16</int> </object> <object class="NSMutableString" key="NSAlternateContents"> @@ -1285,13 +1304,11 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string> <object class="NSScrollView" id="1063387772"> <reference key="NSNextResponder" ref="85544634"/> <int key="NSvFlags">274</int> - <object class="NSMutableArray" key="NSSubviews"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="NSSubviews"> <object class="NSClipView" id="580565898"> <reference key="NSNextResponder" ref="1063387772"/> <int key="NSvFlags">2304</int> - <object class="NSMutableArray" key="NSSubviews"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="NSSubviews"> <object class="NSTableView" id="905092943"> <reference key="NSNextResponder" ref="580565898"/> <int key="NSvFlags">256</int> @@ -1311,15 +1328,14 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string> <string key="NSFrame">{{302, 0}, {16, 17}}</string> <reference key="NSSuperview" ref="1063387772"/> </object> - <object class="NSMutableArray" key="NSTableColumns"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="NSTableColumns"> <object class="NSTableColumn" id="938444323"> - <double key="NSWidth">1.217310e+02</double> - <double key="NSMinWidth">6.273100e+01</double> - <double key="NSMaxWidth">1.000000e+03</double> + <double key="NSWidth">121.73099999999999</double> + <double key="NSMinWidth">62.731000000000002</double> + <double key="NSMaxWidth">1000</double> <object class="NSTableHeaderCell" key="NSHeaderCell"> - <int key="NSCellFlags">75628032</int> - <int key="NSCellFlags2">0</int> + <int key="NSCellFlags">75628096</int> + <int key="NSCellFlags2">2048</int> <string key="NSContents">Name</string> <reference key="NSSupport" ref="26"/> <object class="NSColor" key="NSBackgroundColor" id="113872566"> @@ -1351,12 +1367,12 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string> <reference key="NSTableView" ref="905092943"/> </object> <object class="NSTableColumn" id="84282687"> - <double key="NSWidth">9.900000e+01</double> - <double key="NSMinWidth">4.000000e+01</double> - <double key="NSMaxWidth">1.000000e+03</double> + <double key="NSWidth">99</double> + <double key="NSMinWidth">40</double> + <double key="NSMaxWidth">1000</double> <object class="NSTableHeaderCell" key="NSHeaderCell"> - <int key="NSCellFlags">75628032</int> - <int key="NSCellFlags2">0</int> + <int key="NSCellFlags">75628096</int> + <int key="NSCellFlags2">2048</int> <string key="NSContents">Command</string> <reference key="NSSupport" ref="26"/> <reference key="NSBackgroundColor" ref="113872566"/> @@ -1377,12 +1393,12 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string> <reference key="NSTableView" ref="905092943"/> </object> <object class="NSTableColumn" id="242608782"> - <double key="NSWidth">7.100000e+01</double> - <double key="NSMinWidth">1.000000e+01</double> - <double key="NSMaxWidth">1.000000e+03</double> + <double key="NSWidth">71</double> + <double key="NSMinWidth">10</double> + <double key="NSMaxWidth">1000</double> <object class="NSTableHeaderCell" key="NSHeaderCell"> - <int key="NSCellFlags">67239424</int> - <int key="NSCellFlags2">0</int> + <int key="NSCellFlags">75628096</int> + <int key="NSCellFlags2">2048</int> <string key="NSContents">Shortcut</string> <reference key="NSSupport" ref="26"/> <object class="NSColor" key="NSBackgroundColor"> @@ -1399,7 +1415,7 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string> <string key="NSContents">Text Cell</string> <object class="NSFont" key="NSSupport"> <string key="NSName">LucidaGrande</string> - <double key="NSSize">1.200000e+01</double> + <double key="NSSize">12</double> <int key="NSfFlags">16</int> </object> <reference key="NSControlView" ref="905092943"/> @@ -1417,9 +1433,9 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string> <bool key="NSIsEditable">YES</bool> <reference key="NSTableView" ref="905092943"/> </object> - </object> - <double key="NSIntercellSpacingWidth">3.000000e+00</double> - <double key="NSIntercellSpacingHeight">2.000000e+00</double> + </array> + <double key="NSIntercellSpacingWidth">3</double> + <double key="NSIntercellSpacingHeight">2</double> <reference key="NSBackgroundColor" ref="822946413"/> <object class="NSColor" key="NSGridColor"> <int key="NSColorSpace">6</int> @@ -1430,14 +1446,17 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string> <bytes key="NSWhite">MC41AA</bytes> </object> </object> - <double key="NSRowHeight">1.700000e+01</double> + <double key="NSRowHeight">17</double> <int key="NSTvFlags">1379958784</int> + <reference key="NSDelegate"/> + <reference key="NSDataSource"/> <int key="NSColumnAutoresizingStyle">1</int> <int key="NSDraggingSourceMaskForLocal">-1</int> <int key="NSDraggingSourceMaskForNonLocal">0</int> <bool key="NSAllowsTypeSelect">YES</bool> + <int key="NSTableViewDraggingDestinationStyle">0</int> </object> - </object> + </array> <string key="NSFrame">{{1, 17}, {301, 198}}</string> <reference key="NSSuperview" ref="1063387772"/> <reference key="NSNextKeyView" ref="905092943"/> @@ -1452,7 +1471,7 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string> <reference key="NSSuperview" ref="1063387772"/> <reference key="NSTarget" ref="1063387772"/> <string key="NSAction">_doScroller:</string> - <double key="NSPercent">9.949238e-01</double> + <double key="NSPercent">0.99492380000000002</double> </object> <object class="NSScroller" id="17278747"> <reference key="NSNextResponder" ref="1063387772"/> @@ -1462,15 +1481,14 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string> <int key="NSsFlags">1</int> <reference key="NSTarget" ref="1063387772"/> <string key="NSAction">_doScroller:</string> - <double key="NSPercent">6.885246e-01</double> + <double key="NSPercent">0.68852460000000004</double> </object> <object class="NSClipView" id="672307654"> <reference key="NSNextResponder" ref="1063387772"/> <int key="NSvFlags">2304</int> - <object class="NSMutableArray" key="NSSubviews"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="NSSubviews"> <reference ref="792419186"/> - </object> + </array> <string key="NSFrame">{{1, 0}, {301, 17}}</string> <reference key="NSSuperview" ref="1063387772"/> <reference key="NSNextKeyView" ref="792419186"/> @@ -1479,7 +1497,7 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string> <int key="NScvFlags">4</int> </object> <reference ref="898633680"/> - </object> + </array> <string key="NSFrame">{{20, 20}, {318, 231}}</string> <reference key="NSSuperview" ref="85544634"/> <reference key="NSNextKeyView" ref="580565898"/> @@ -1488,7 +1506,6 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string> <reference key="NSHScroller" ref="17278747"/> <reference key="NSContentView" ref="580565898"/> <reference key="NSHeaderClipView" ref="672307654"/> - <reference key="NSCornerView" ref="898633680"/> <bytes key="NSScrollAmts">QSAAAEEgAABBmAAAQZgAAA</bytes> </object> <object class="NSButton" id="758204686"> @@ -1516,18 +1533,17 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string> <int key="NSPeriodicInterval">25</int> </object> </object> - </object> + </array> <string key="NSFrameSize">{454, 271}</string> </object> <string key="NSScreenRect">{{0, 0}, {1280, 938}}</string> <string key="NSMinSize">{320, 262}</string> - <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string> + <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string> <string key="NSFrameAutosaveName">x11_apps</string> </object> <object class="NSMenu" id="294137138"> <string key="NSTitle">Menu</string> - <object class="NSMutableArray" key="NSMenuItems"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="NSMenuItems"> <object class="NSMenuItem" id="318286212"> <reference key="NSMenu" ref="294137138"/> <bool key="NSIsDisabled">YES</bool> @@ -1550,8 +1566,7 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string> <string key="NSAction">submenuAction:</string> <object class="NSMenu" key="NSSubmenu" id="48278059"> <string key="NSTitle">Applications</string> - <object class="NSMutableArray" key="NSMenuItems"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="NSMenuItems"> <object class="NSMenuItem" id="563798000"> <reference key="NSMenu" ref="48278059"/> <bool key="NSIsDisabled">YES</bool> @@ -1565,23 +1580,22 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string> </object> <object class="NSMenuItem" id="1032342329"> <reference key="NSMenu" ref="48278059"/> - <string type="base64-UTF8" key="NSTitle">Q3VzdG9taXpl4oCmA</string> + <string key="NSTitle">Customize…</string> <string key="NSKeyEquiv"/> <int key="NSKeyEquivModMask">1048576</int> <int key="NSMnemonicLoc">2147483647</int> <reference key="NSOnImage" ref="531645050"/> <reference key="NSMixedImage" ref="351811234"/> </object> - </object> + </array> </object> </object> - </object> + </array> <string key="NSName"/> </object> - </object> + </array> <object class="IBObjectContainer" key="IBDocument.Objects"> - <object class="NSMutableArray" key="connectionRecords"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="connectionRecords"> <object class="IBConnectionRecord"> <object class="IBActionConnection" key="connection"> <string key="label">copy:</string> @@ -2126,64 +2140,74 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string> </object> <int key="connectionID">300475</int> </object> - </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">prefs_changed:</string> + <reference key="source" ref="485884620"/> + <reference key="destination" ref="406291430"/> + </object> + <int key="connectionID">300480</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">option_sends_alt</string> + <reference key="source" ref="485884620"/> + <reference key="destination" ref="406291430"/> + </object> + <int key="connectionID">300481</int> + </object> + </array> <object class="IBMutableOrderedSet" key="objectRecords"> - <object class="NSArray" key="orderedObjects"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array key="orderedObjects"> <object class="IBObjectRecord"> <int key="objectID">0</int> - <object class="NSArray" key="object" id="330408435"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> + <array key="object" id="0"/> <reference key="children" ref="904585544"/> <nil key="parent"/> </object> <object class="IBObjectRecord"> <int key="objectID">-2</int> <reference key="object" ref="815810918"/> - <reference key="parent" ref="330408435"/> - <string type="base64-UTF8" key="objectName">RmlsZSdzIE93bmVyA</string> + <reference key="parent" ref="0"/> + <string key="objectName">File's Owner</string> </object> <object class="IBObjectRecord"> <int key="objectID">-1</int> <reference key="object" ref="941939442"/> - <reference key="parent" ref="330408435"/> + <reference key="parent" ref="0"/> <string key="objectName">First Responder</string> </object> <object class="IBObjectRecord"> <int key="objectID">-3</int> <reference key="object" ref="951368722"/> - <reference key="parent" ref="330408435"/> + <reference key="parent" ref="0"/> <string key="objectName">Application</string> </object> <object class="IBObjectRecord"> <int key="objectID">29</int> <reference key="object" ref="524015605"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="931553638"/> <reference ref="365880285"/> <reference ref="200491363"/> <reference ref="868031522"/> <reference ref="551174276"/> - </object> - <reference key="parent" ref="330408435"/> + </array> + <reference key="parent" ref="0"/> <string key="objectName">MainMenu</string> </object> <object class="IBObjectRecord"> <int key="objectID">19</int> <reference key="object" ref="931553638"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="96874957"/> - </object> + </array> <reference key="parent" ref="524015605"/> </object> <object class="IBObjectRecord"> <int key="objectID">24</int> <reference key="object" ref="96874957"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="677652931"/> <reference ref="276216762"/> <reference ref="1066447520"/> @@ -2192,7 +2216,7 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string> <reference ref="155085383"/> <reference ref="984461797"/> <reference ref="280172320"/> - </object> + </array> <reference key="parent" ref="931553638"/> </object> <object class="IBObjectRecord"> @@ -2238,17 +2262,15 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string> <object class="IBObjectRecord"> <int key="objectID">56</int> <reference key="object" ref="365880285"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="576521955"/> - </object> + </array> <reference key="parent" ref="524015605"/> </object> <object class="IBObjectRecord"> <int key="objectID">57</int> <reference key="object" ref="576521955"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="139290918"/> <reference ref="386173216"/> <reference ref="32285361"/> @@ -2261,7 +2283,7 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string> <reference ref="1023546148"/> <reference ref="6876565"/> <reference ref="479677589"/> - </object> + </array> <reference key="parent" ref="365880285"/> </object> <object class="IBObjectRecord"> @@ -2277,10 +2299,9 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string> <object class="IBObjectRecord"> <int key="objectID">131</int> <reference key="object" ref="32285361"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="821388474"/> - </object> + </array> <reference key="parent" ref="576521955"/> </object> <object class="IBObjectRecord"> @@ -2336,19 +2357,17 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string> <object class="IBObjectRecord"> <int key="objectID">163</int> <reference key="object" ref="200491363"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="526778998"/> - </object> + </array> <reference key="parent" ref="524015605"/> </object> <object class="IBObjectRecord"> <int key="objectID">169</int> <reference key="object" ref="526778998"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="185296989"/> - </object> + </array> <reference key="parent" ref="200491363"/> </object> <object class="IBObjectRecord"> @@ -2359,20 +2378,18 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string> <object class="IBObjectRecord"> <int key="objectID">269</int> <reference key="object" ref="868031522"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="981161348"/> - </object> + </array> <reference key="parent" ref="524015605"/> </object> <object class="IBObjectRecord"> <int key="objectID">270</int> <reference key="object" ref="981161348"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="390088328"/> <reference ref="1065386165"/> - </object> + </array> <reference key="parent" ref="868031522"/> </object> <object class="IBObjectRecord"> @@ -2388,19 +2405,17 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string> <object class="IBObjectRecord"> <int key="objectID">419</int> <reference key="object" ref="551174276"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="511848303"/> - </object> + </array> <reference key="parent" ref="524015605"/> </object> <object class="IBObjectRecord"> <int key="objectID">420</int> <reference key="object" ref="511848303"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="504984881"/> - </object> + </array> <reference key="parent" ref="551174276"/> </object> <object class="IBObjectRecord"> @@ -2411,132 +2426,121 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string> <object class="IBObjectRecord"> <int key="objectID">196</int> <reference key="object" ref="485884620"/> - <reference key="parent" ref="330408435"/> + <reference key="parent" ref="0"/> <string key="objectName">X11Controller</string> </object> <object class="IBObjectRecord"> <int key="objectID">244</int> <reference key="object" ref="124913468"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="941366957"/> - </object> - <reference key="parent" ref="330408435"/> + </array> + <reference key="parent" ref="0"/> <string key="objectName">PrefsPanel</string> </object> <object class="IBObjectRecord"> <int key="objectID">245</int> <reference key="object" ref="941366957"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="448510093"/> - </object> + </array> <reference key="parent" ref="124913468"/> </object> <object class="IBObjectRecord"> <int key="objectID">348</int> <reference key="object" ref="448510093"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="287591690"/> <reference ref="960678392"/> <reference ref="348328898"/> <reference ref="10973343"/> <reference ref="723450037"/> - </object> + </array> <reference key="parent" ref="941366957"/> </object> <object class="IBObjectRecord"> <int key="objectID">349</int> <reference key="object" ref="287591690"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="596750588"/> - </object> + </array> <reference key="parent" ref="448510093"/> </object> <object class="IBObjectRecord"> <int key="objectID">351</int> <reference key="object" ref="596750588"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="119157981"/> <reference ref="443008216"/> <reference ref="282885445"/> <reference ref="842100515"/> <reference ref="31160162"/> <reference ref="179949713"/> - </object> + <reference ref="278155937"/> + <reference ref="406291430"/> + </array> <reference key="parent" ref="287591690"/> </object> <object class="IBObjectRecord"> <int key="objectID">363</int> <reference key="object" ref="119157981"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="990762273"/> - </object> + </array> <reference key="parent" ref="596750588"/> </object> <object class="IBObjectRecord"> <int key="objectID">364</int> <reference key="object" ref="443008216"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="391919450"/> - </object> + </array> <reference key="parent" ref="596750588"/> </object> <object class="IBObjectRecord"> <int key="objectID">365</int> <reference key="object" ref="282885445"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="649334366"/> - </object> + </array> <reference key="parent" ref="596750588"/> </object> <object class="IBObjectRecord"> <int key="objectID">368</int> <reference key="object" ref="842100515"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="940564599"/> - </object> + </array> <reference key="parent" ref="596750588"/> </object> <object class="IBObjectRecord"> <int key="objectID">369</int> <reference key="object" ref="31160162"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="666057093"/> - </object> + </array> <reference key="parent" ref="596750588"/> </object> <object class="IBObjectRecord"> <int key="objectID">370</int> <reference key="object" ref="179949713"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="967619578"/> - </object> + </array> <reference key="parent" ref="596750588"/> </object> <object class="IBObjectRecord"> <int key="objectID">352</int> <reference key="object" ref="960678392"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="515308735"/> - </object> + </array> <reference key="parent" ref="448510093"/> </object> <object class="IBObjectRecord"> <int key="objectID">350</int> <reference key="object" ref="515308735"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="709074847"/> <reference ref="201731424"/> <reference ref="86150604"/> @@ -2545,170 +2549,153 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string> <reference ref="298603383"/> <reference ref="418227126"/> <reference ref="1039016593"/> - </object> + </array> <reference key="parent" ref="960678392"/> </object> <object class="IBObjectRecord"> <int key="objectID">371</int> <reference key="object" ref="418227126"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="1016069354"/> - </object> + </array> <reference key="parent" ref="515308735"/> </object> <object class="IBObjectRecord"> <int key="objectID">372</int> <reference key="object" ref="1039016593"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="624655599"/> - </object> + </array> <reference key="parent" ref="515308735"/> </object> <object class="IBObjectRecord"> <int key="objectID">382</int> <reference key="object" ref="709074847"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="633115429"/> - </object> + </array> <reference key="parent" ref="515308735"/> </object> <object class="IBObjectRecord"> <int key="objectID">385</int> <reference key="object" ref="201731424"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="930265681"/> - </object> + </array> <reference key="parent" ref="515308735"/> </object> <object class="IBObjectRecord"> <int key="objectID">386</int> <reference key="object" ref="86150604"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="311969422"/> - </object> + </array> <reference key="parent" ref="515308735"/> </object> <object class="IBObjectRecord"> <int key="objectID">541</int> <reference key="object" ref="477203622"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="631531164"/> - </object> + </array> <reference key="parent" ref="515308735"/> </object> <object class="IBObjectRecord"> <int key="objectID">543</int> <reference key="object" ref="298603383"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="761107402"/> - </object> + </array> <reference key="parent" ref="515308735"/> </object> <object class="IBObjectRecord"> <int key="objectID">353</int> <reference key="object" ref="348328898"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="300811574"/> - </object> + </array> <reference key="parent" ref="448510093"/> </object> <object class="IBObjectRecord"> <int key="objectID">354</int> <reference key="object" ref="300811574"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="989050925"/> <reference ref="700826966"/> <reference ref="168436707"/> <reference ref="363817195"/> <reference ref="223835729"/> - </object> + </array> <reference key="parent" ref="348328898"/> </object> <object class="IBObjectRecord"> <int key="objectID">374</int> <reference key="object" ref="989050925"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="189594322"/> - </object> + </array> <reference key="parent" ref="300811574"/> </object> <object class="IBObjectRecord"> <int key="objectID">375</int> <reference key="object" ref="700826966"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="489340979"/> - </object> + </array> <reference key="parent" ref="300811574"/> </object> <object class="IBObjectRecord"> <int key="objectID">376</int> <reference key="object" ref="168436707"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="53243865"/> - </object> + </array> <reference key="parent" ref="300811574"/> </object> <object class="IBObjectRecord"> <int key="objectID">377</int> <reference key="object" ref="363817195"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="390084685"/> - </object> + </array> <reference key="parent" ref="300811574"/> </object> <object class="IBObjectRecord"> <int key="objectID">379</int> <reference key="object" ref="223835729"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="283628678"/> - </object> + </array> <reference key="parent" ref="300811574"/> </object> <object class="IBObjectRecord"> <int key="objectID">285</int> <reference key="object" ref="604417141"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="85544634"/> - </object> - <reference key="parent" ref="330408435"/> + </array> + <reference key="parent" ref="0"/> <string key="objectName">EditPrograms</string> </object> <object class="IBObjectRecord"> <int key="objectID">286</int> <reference key="object" ref="85544634"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="1063387772"/> <reference ref="758204686"/> <reference ref="671954382"/> <reference ref="492358940"/> - </object> + </array> <reference key="parent" ref="604417141"/> </object> <object class="IBObjectRecord"> <int key="objectID">423</int> <reference key="object" ref="294137138"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="318286212"/> <reference ref="511651072"/> - </object> - <reference key="parent" ref="330408435"/> + </array> + <reference key="parent" ref="0"/> <string key="objectName">DockMenu</string> </object> <object class="IBObjectRecord"> @@ -2719,20 +2706,18 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string> <object class="IBObjectRecord"> <int key="objectID">526</int> <reference key="object" ref="511651072"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="48278059"/> - </object> + </array> <reference key="parent" ref="294137138"/> </object> <object class="IBObjectRecord"> <int key="objectID">527</int> <reference key="object" ref="48278059"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="1032342329"/> <reference ref="563798000"/> - </object> + </array> <reference key="parent" ref="511651072"/> </object> <object class="IBObjectRecord"> @@ -2788,10 +2773,9 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string> <object class="IBObjectRecord"> <int key="objectID">100382</int> <reference key="object" ref="633115429"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="341113515"/> - </object> + </array> <reference key="parent" ref="709074847"/> </object> <object class="IBObjectRecord"> @@ -2842,13 +2826,12 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string> <object class="IBObjectRecord"> <int key="objectID">380</int> <reference key="object" ref="341113515"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="759499526"/> <reference ref="616492372"/> <reference ref="543935434"/> <reference ref="836673018"/> - </object> + </array> <reference key="parent" ref="633115429"/> </object> <object class="IBObjectRecord"> @@ -2874,13 +2857,12 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string> <object class="IBObjectRecord"> <int key="objectID">295</int> <reference key="object" ref="1063387772"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="792419186"/> <reference ref="17278747"/> <reference ref="842897584"/> <reference ref="905092943"/> - </object> + </array> <reference key="parent" ref="85544634"/> </object> <object class="IBObjectRecord"> @@ -2901,21 +2883,19 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string> <object class="IBObjectRecord"> <int key="objectID">296</int> <reference key="object" ref="905092943"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="242608782"/> <reference ref="938444323"/> <reference ref="84282687"/> - </object> + </array> <reference key="parent" ref="1063387772"/> </object> <object class="IBObjectRecord"> <int key="objectID">535</int> <reference key="object" ref="242608782"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="34714764"/> - </object> + </array> <reference key="parent" ref="905092943"/> </object> <object class="IBObjectRecord"> @@ -2926,10 +2906,9 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string> <object class="IBObjectRecord"> <int key="objectID">298</int> <reference key="object" ref="938444323"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="825378892"/> - </object> + </array> <reference key="parent" ref="905092943"/> </object> <object class="IBObjectRecord"> @@ -2940,10 +2919,9 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string> <object class="IBObjectRecord"> <int key="objectID">297</int> <reference key="object" ref="84282687"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="432610585"/> - </object> + </array> <reference key="parent" ref="905092943"/> </object> <object class="IBObjectRecord"> @@ -2954,10 +2932,9 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string> <object class="IBObjectRecord"> <int key="objectID">310</int> <reference key="object" ref="758204686"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="1025474039"/> - </object> + </array> <reference key="parent" ref="85544634"/> </object> <object class="IBObjectRecord"> @@ -2968,10 +2945,9 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string> <object class="IBObjectRecord"> <int key="objectID">292</int> <reference key="object" ref="671954382"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="143554520"/> - </object> + </array> <reference key="parent" ref="85544634"/> </object> <object class="IBObjectRecord"> @@ -2982,10 +2958,9 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string> <object class="IBObjectRecord"> <int key="objectID">293</int> <reference key="object" ref="492358940"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="8201128"/> - </object> + </array> <reference key="parent" ref="85544634"/> </object> <object class="IBObjectRecord"> @@ -2996,42 +2971,38 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string> <object class="IBObjectRecord"> <int key="objectID">300337</int> <reference key="object" ref="10973343"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="184765684"/> - </object> + </array> <reference key="parent" ref="448510093"/> </object> <object class="IBObjectRecord"> <int key="objectID">300338</int> <reference key="object" ref="184765684"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="657659108"/> <reference ref="290578835"/> <reference ref="992839333"/> <reference ref="138261120"/> <reference ref="128352289"/> <reference ref="57161931"/> - </object> + </array> <reference key="parent" ref="10973343"/> </object> <object class="IBObjectRecord"> <int key="objectID">300358</int> <reference key="object" ref="290578835"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="399127858"/> - </object> + </array> <reference key="parent" ref="184765684"/> </object> <object class="IBObjectRecord"> <int key="objectID">300359</int> <reference key="object" ref="657659108"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="259618205"/> - </object> + </array> <reference key="parent" ref="184765684"/> </object> <object class="IBObjectRecord"> @@ -3047,10 +3018,9 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string> <object class="IBObjectRecord"> <int key="objectID">300362</int> <reference key="object" ref="992839333"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="959555182"/> - </object> + </array> <reference key="parent" ref="184765684"/> </object> <object class="IBObjectRecord"> @@ -3061,10 +3031,9 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string> <object class="IBObjectRecord"> <int key="objectID">300364</int> <reference key="object" ref="138261120"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="183409141"/> - </object> + </array> <reference key="parent" ref="184765684"/> </object> <object class="IBObjectRecord"> @@ -3075,10 +3044,9 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string> <object class="IBObjectRecord"> <int key="objectID">300368</int> <reference key="object" ref="128352289"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="556463187"/> - </object> + </array> <reference key="parent" ref="184765684"/> </object> <object class="IBObjectRecord"> @@ -3089,10 +3057,9 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string> <object class="IBObjectRecord"> <int key="objectID">300370</int> <reference key="object" ref="57161931"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="989804990"/> - </object> + </array> <reference key="parent" ref="184765684"/> </object> <object class="IBObjectRecord"> @@ -3103,17 +3070,15 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string> <object class="IBObjectRecord"> <int key="objectID">300421</int> <reference key="object" ref="723450037"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="408298283"/> - </object> + </array> <reference key="parent" ref="448510093"/> </object> <object class="IBObjectRecord"> <int key="objectID">300422</int> <reference key="object" ref="408298283"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="878106058"/> <reference ref="386152084"/> <reference ref="487809555"/> @@ -3122,25 +3087,23 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string> <reference ref="765780304"/> <reference ref="1002778833"/> <reference ref="522511724"/> - </object> + </array> <reference key="parent" ref="723450037"/> </object> <object class="IBObjectRecord"> <int key="objectID">300423</int> <reference key="object" ref="386152084"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="572508492"/> - </object> + </array> <reference key="parent" ref="408298283"/> </object> <object class="IBObjectRecord"> <int key="objectID">300424</int> <reference key="object" ref="878106058"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="718083688"/> - </object> + </array> <reference key="parent" ref="408298283"/> </object> <object class="IBObjectRecord"> @@ -3156,10 +3119,9 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string> <object class="IBObjectRecord"> <int key="objectID">300447</int> <reference key="object" ref="477050998"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="501304422"/> - </object> + </array> <reference key="parent" ref="408298283"/> </object> <object class="IBObjectRecord"> @@ -3170,10 +3132,9 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string> <object class="IBObjectRecord"> <int key="objectID">300451</int> <reference key="object" ref="765780304"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="510771323"/> - </object> + </array> <reference key="parent" ref="408298283"/> </object> <object class="IBObjectRecord"> @@ -3184,10 +3145,9 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string> <object class="IBObjectRecord"> <int key="objectID">300453</int> <reference key="object" ref="487809555"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="619977658"/> - </object> + </array> <reference key="parent" ref="408298283"/> </object> <object class="IBObjectRecord"> @@ -3198,10 +3158,9 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string> <object class="IBObjectRecord"> <int key="objectID">300455</int> <reference key="object" ref="620944856"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="461823902"/> - </object> + </array> <reference key="parent" ref="408298283"/> </object> <object class="IBObjectRecord"> @@ -3212,10 +3171,9 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string> <object class="IBObjectRecord"> <int key="objectID">300457</int> <reference key="object" ref="1002778833"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="897099877"/> - </object> + </array> <reference key="parent" ref="408298283"/> </object> <object class="IBObjectRecord"> @@ -3226,10 +3184,9 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string> <object class="IBObjectRecord"> <int key="objectID">300459</int> <reference key="object" ref="522511724"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="994587858"/> - </object> + </array> <reference key="parent" ref="408298283"/> </object> <object class="IBObjectRecord"> @@ -3240,10 +3197,9 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string> <object class="IBObjectRecord"> <int key="objectID">300472</int> <reference key="object" ref="57246850"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="children"> <reference ref="917248662"/> - </object> + </array> <reference key="parent" ref="515308735"/> </object> <object class="IBObjectRecord"> @@ -3251,610 +3207,333 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string> <reference key="object" ref="917248662"/> <reference key="parent" ref="57246850"/> </object> - </object> - </object> - <object class="NSMutableDictionary" key="flattenedProperties"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSMutableArray" key="dict.sortedKeys"> - <bool key="EncodedWithXMLCoder">YES</bool> - <string>-1.IBPluginDependency</string> - <string>-2.IBPluginDependency</string> - <string>-3.IBPluginDependency</string> - <string>-3.ImportedFromIB2</string> - <string>100292.IBPluginDependency</string> - <string>100293.IBPluginDependency</string> - <string>100295.IBPluginDependency</string> - <string>100295.IBShouldRemoveOnLegacySave</string> - <string>100310.IBPluginDependency</string> - <string>100363.IBPluginDependency</string> - <string>100364.IBPluginDependency</string> - <string>100365.IBPluginDependency</string> - <string>100368.IBPluginDependency</string> - <string>100369.IBPluginDependency</string> - <string>100370.IBPluginDependency</string> - <string>100371.IBPluginDependency</string> - <string>100372.IBPluginDependency</string> - <string>100374.IBPluginDependency</string> - <string>100375.IBPluginDependency</string> - <string>100376.IBPluginDependency</string> - <string>100377.IBPluginDependency</string> - <string>100379.IBPluginDependency</string> - <string>100382.IBPluginDependency</string> - <string>100385.IBPluginDependency</string> - <string>100386.IBPluginDependency</string> - <string>100541.IBPluginDependency</string> - <string>100543.IBPluginDependency</string> - <string>129.IBPluginDependency</string> - <string>129.ImportedFromIB2</string> - <string>130.IBPluginDependency</string> - <string>130.ImportedFromIB2</string> - <string>131.IBPluginDependency</string> - <string>131.ImportedFromIB2</string> - <string>134.IBPluginDependency</string> - <string>134.ImportedFromIB2</string> - <string>136.IBPluginDependency</string> - <string>136.ImportedFromIB2</string> - <string>143.IBPluginDependency</string> - <string>143.ImportedFromIB2</string> - <string>144.IBPluginDependency</string> - <string>144.ImportedFromIB2</string> - <string>145.IBPluginDependency</string> - <string>145.ImportedFromIB2</string> - <string>149.IBPluginDependency</string> - <string>149.ImportedFromIB2</string> - <string>150.IBPluginDependency</string> - <string>150.ImportedFromIB2</string> - <string>157.IBPluginDependency</string> - <string>157.ImportedFromIB2</string> - <string>163.IBPluginDependency</string> - <string>163.ImportedFromIB2</string> - <string>169.IBEditorWindowLastContentRect</string> - <string>169.IBPluginDependency</string> - <string>169.ImportedFromIB2</string> - <string>169.editorWindowContentRectSynchronizationRect</string> - <string>19.IBPluginDependency</string> - <string>19.ImportedFromIB2</string> - <string>196.IBPluginDependency</string> - <string>196.ImportedFromIB2</string> - <string>200295.IBPluginDependency</string> - <string>200295.IBShouldRemoveOnLegacySave</string> - <string>203.IBPluginDependency</string> - <string>203.ImportedFromIB2</string> - <string>204.IBPluginDependency</string> - <string>204.ImportedFromIB2</string> - <string>23.IBPluginDependency</string> - <string>23.ImportedFromIB2</string> - <string>24.IBEditorWindowLastContentRect</string> - <string>24.IBPluginDependency</string> - <string>24.ImportedFromIB2</string> - <string>24.editorWindowContentRectSynchronizationRect</string> - <string>244.IBEditorWindowLastContentRect</string> - <string>244.IBWindowTemplateEditedContentRect</string> - <string>244.ImportedFromIB2</string> - <string>244.editorWindowContentRectSynchronizationRect</string> - <string>244.windowTemplate.hasMaxSize</string> - <string>244.windowTemplate.hasMinSize</string> - <string>244.windowTemplate.maxSize</string> - <string>244.windowTemplate.minSize</string> - <string>245.IBPluginDependency</string> - <string>245.ImportedFromIB2</string> - <string>269.IBPluginDependency</string> - <string>269.ImportedFromIB2</string> - <string>270.IBEditorWindowLastContentRect</string> - <string>270.IBPluginDependency</string> - <string>270.ImportedFromIB2</string> - <string>270.editorWindowContentRectSynchronizationRect</string> - <string>272.IBPluginDependency</string> - <string>272.ImportedFromIB2</string> - <string>285.IBEditorWindowLastContentRect</string> - <string>285.IBViewEditorWindowController.showingBoundsRectangles</string> - <string>285.IBViewEditorWindowController.showingLayoutRectangles</string> - <string>285.IBWindowTemplateEditedContentRect</string> - <string>285.ImportedFromIB2</string> - <string>285.editorWindowContentRectSynchronizationRect</string> - <string>285.windowTemplate.hasMaxSize</string> - <string>285.windowTemplate.hasMinSize</string> - <string>285.windowTemplate.maxSize</string> - <string>285.windowTemplate.minSize</string> - <string>286.IBPluginDependency</string> - <string>286.ImportedFromIB2</string> - <string>29.IBEditorWindowLastContentRect</string> - <string>29.IBPluginDependency</string> - <string>29.ImportedFromIB2</string> - <string>29.editorWindowContentRectSynchronizationRect</string> - <string>292.IBPluginDependency</string> - <string>292.ImportedFromIB2</string> - <string>293.IBPluginDependency</string> - <string>293.ImportedFromIB2</string> - <string>295.IBPluginDependency</string> - <string>295.ImportedFromIB2</string> - <string>296.IBPluginDependency</string> - <string>296.ImportedFromIB2</string> - <string>297.IBPluginDependency</string> - <string>297.ImportedFromIB2</string> - <string>298.IBPluginDependency</string> - <string>298.ImportedFromIB2</string> - <string>300295.IBPluginDependency</string> - <string>300295.IBShouldRemoveOnLegacySave</string> - <string>300337.IBPluginDependency</string> - <string>300337.ImportedFromIB2</string> - <string>300338.IBPluginDependency</string> - <string>300338.ImportedFromIB2</string> - <string>300358.IBPluginDependency</string> - <string>300358.ImportedFromIB2</string> - <string>300359.IBPluginDependency</string> - <string>300359.ImportedFromIB2</string> - <string>300360.IBPluginDependency</string> - <string>300361.IBPluginDependency</string> - <string>300362.IBPluginDependency</string> - <string>300362.ImportedFromIB2</string> - <string>300363.IBPluginDependency</string> - <string>300364.IBPluginDependency</string> - <string>300364.ImportedFromIB2</string> - <string>300365.IBPluginDependency</string> - <string>300368.IBPluginDependency</string> - <string>300368.ImportedFromIB2</string> - <string>300369.IBPluginDependency</string> - <string>300370.IBPluginDependency</string> - <string>300370.ImportedFromIB2</string> - <string>300371.IBPluginDependency</string> - <string>300421.IBPluginDependency</string> - <string>300421.ImportedFromIB2</string> - <string>300422.IBPluginDependency</string> - <string>300422.ImportedFromIB2</string> - <string>300423.IBPluginDependency</string> - <string>300423.ImportedFromIB2</string> - <string>300424.IBPluginDependency</string> - <string>300424.ImportedFromIB2</string> - <string>300440.IBPluginDependency</string> - <string>300441.IBPluginDependency</string> - <string>300447.IBPluginDependency</string> - <string>300447.ImportedFromIB2</string> - <string>300450.IBPluginDependency</string> - <string>300451.IBPluginDependency</string> - <string>300451.ImportedFromIB2</string> - <string>300452.IBPluginDependency</string> - <string>300453.IBPluginDependency</string> - <string>300453.ImportedFromIB2</string> - <string>300454.IBPluginDependency</string> - <string>300455.IBPluginDependency</string> - <string>300455.ImportedFromIB2</string> - <string>300456.IBPluginDependency</string> - <string>300457.IBPluginDependency</string> - <string>300457.ImportedFromIB2</string> - <string>300458.IBPluginDependency</string> - <string>300459.IBPluginDependency</string> - <string>300459.ImportedFromIB2</string> - <string>300460.IBPluginDependency</string> - <string>300472.IBPluginDependency</string> - <string>300472.ImportedFromIB2</string> - <string>300473.IBPluginDependency</string> - <string>305.IBPluginDependency</string> - <string>305.ImportedFromIB2</string> - <string>310.IBPluginDependency</string> - <string>310.ImportedFromIB2</string> - <string>348.IBPluginDependency</string> - <string>348.ImportedFromIB2</string> - <string>349.IBPluginDependency</string> - <string>349.ImportedFromIB2</string> - <string>350.IBPluginDependency</string> - <string>350.ImportedFromIB2</string> - <string>351.IBPluginDependency</string> - <string>351.ImportedFromIB2</string> - <string>352.IBPluginDependency</string> - <string>352.ImportedFromIB2</string> - <string>353.IBPluginDependency</string> - <string>353.ImportedFromIB2</string> - <string>354.IBPluginDependency</string> - <string>354.ImportedFromIB2</string> - <string>363.IBPluginDependency</string> - <string>363.ImportedFromIB2</string> - <string>364.IBPluginDependency</string> - <string>364.ImportedFromIB2</string> - <string>365.IBPluginDependency</string> - <string>365.ImportedFromIB2</string> - <string>368.IBPluginDependency</string> - <string>368.ImportedFromIB2</string> - <string>369.IBPluginDependency</string> - <string>369.ImportedFromIB2</string> - <string>370.IBPluginDependency</string> - <string>370.ImportedFromIB2</string> - <string>371.IBPluginDependency</string> - <string>371.ImportedFromIB2</string> - <string>372.IBPluginDependency</string> - <string>372.ImportedFromIB2</string> - <string>374.IBPluginDependency</string> - <string>374.ImportedFromIB2</string> - <string>375.IBPluginDependency</string> - <string>375.ImportedFromIB2</string> - <string>376.IBPluginDependency</string> - <string>376.ImportedFromIB2</string> - <string>377.IBPluginDependency</string> - <string>377.ImportedFromIB2</string> - <string>379.IBPluginDependency</string> - <string>379.ImportedFromIB2</string> - <string>380.IBPluginDependency</string> - <string>380.ImportedFromIB2</string> - <string>381.IBPluginDependency</string> - <string>381.ImportedFromIB2</string> - <string>382.IBPluginDependency</string> - <string>382.ImportedFromIB2</string> - <string>383.IBPluginDependency</string> - <string>383.ImportedFromIB2</string> - <string>384.IBPluginDependency</string> - <string>384.ImportedFromIB2</string> - <string>385.IBPluginDependency</string> - <string>385.ImportedFromIB2</string> - <string>386.IBPluginDependency</string> - <string>386.ImportedFromIB2</string> - <string>419.IBPluginDependency</string> - <string>419.ImportedFromIB2</string> - <string>420.IBPluginDependency</string> - <string>420.ImportedFromIB2</string> - <string>421.IBPluginDependency</string> - <string>421.ImportedFromIB2</string> - <string>423.IBPluginDependency</string> - <string>423.ImportedFromIB2</string> - <string>435.IBPluginDependency</string> - <string>435.ImportedFromIB2</string> - <string>5.IBPluginDependency</string> - <string>5.ImportedFromIB2</string> - <string>524.IBPluginDependency</string> - <string>524.ImportedFromIB2</string> - <string>526.IBPluginDependency</string> - <string>526.ImportedFromIB2</string> - <string>527.IBPluginDependency</string> - <string>527.ImportedFromIB2</string> - <string>532.IBPluginDependency</string> - <string>532.ImportedFromIB2</string> - <string>533.IBPluginDependency</string> - <string>533.ImportedFromIB2</string> - <string>535.IBPluginDependency</string> - <string>535.ImportedFromIB2</string> - <string>536.IBPluginDependency</string> - <string>536.ImportedFromIB2</string> - <string>537.IBPluginDependency</string> - <string>537.ImportedFromIB2</string> - <string>538.IBPluginDependency</string> - <string>538.ImportedFromIB2</string> - <string>541.IBPluginDependency</string> - <string>541.ImportedFromIB2</string> - <string>543.IBPluginDependency</string> - <string>543.ImportedFromIB2</string> - <string>544.IBPluginDependency</string> - <string>544.ImportedFromIB2</string> - <string>545.IBPluginDependency</string> - <string>545.ImportedFromIB2</string> - <string>56.IBPluginDependency</string> - <string>56.ImportedFromIB2</string> - <string>57.IBEditorWindowLastContentRect</string> - <string>57.IBPluginDependency</string> - <string>57.ImportedFromIB2</string> - <string>57.editorWindowContentRectSynchronizationRect</string> - <string>573.IBPluginDependency</string> - <string>573.ImportedFromIB2</string> - <string>574.IBPluginDependency</string> - <string>574.ImportedFromIB2</string> - <string>575.IBPluginDependency</string> - <string>575.ImportedFromIB2</string> - <string>58.IBPluginDependency</string> - <string>58.ImportedFromIB2</string> - <string>92.IBPluginDependency</string> - <string>92.ImportedFromIB2</string> - </object> - <object class="NSMutableArray" key="dict.values"> - <bool key="EncodedWithXMLCoder">YES</bool> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <integer value="1" id="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>{{168, 821}, {113, 23}}</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>{{202, 626}, {154, 153}}</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>{{349, 868}, {315, 143}}</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>{{271, 666}, {301, 153}}</string> - <string>{{437, 749}, {484, 308}}</string> - <string>{{437, 749}, {484, 308}}</string> - <reference ref="9"/> - <string>{{184, 290}, {481, 345}}</string> - <integer value="0" id="8"/> - <reference ref="9"/> - <string>{3.40282e+38, 3.40282e+38}</string> - <string>{320, 240}</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>{{58, 803}, {155, 33}}</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>{{100, 746}, {155, 33}}</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>{{68, 585}, {454, 271}}</string> - <reference ref="9"/> - <reference ref="9"/> - <string>{{68, 585}, {454, 271}}</string> - <reference ref="9"/> - <string>{{433, 406}, {486, 327}}</string> - <reference ref="8"/> - <reference ref="9"/> - <string>{3.40282e+38, 3.40282e+38}</string> - <string>{320, 240}</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>{{145, 1011}, {336, 20}}</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>{{67, 819}, {336, 20}}</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>{{20, 641}, {218, 203}}</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>{{79, 616}, {218, 203}}</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <reference ref="9"/> - </object> - </object> - <object class="NSMutableDictionary" key="unlocalizedProperties"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSArray" key="dict.sortedKeys"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - <object class="NSMutableArray" key="dict.values"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> + <object class="IBObjectRecord"> + <int key="objectID">300476</int> + <reference key="object" ref="278155937"/> + <array class="NSMutableArray" key="children"> + <reference ref="617441821"/> + </array> + <reference key="parent" ref="596750588"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">300477</int> + <reference key="object" ref="406291430"/> + <array class="NSMutableArray" key="children"> + <reference ref="67728988"/> + </array> + <reference key="parent" ref="596750588"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">300478</int> + <reference key="object" ref="67728988"/> + <reference key="parent" ref="406291430"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">300479</int> + <reference key="object" ref="617441821"/> + <reference key="parent" ref="278155937"/> + </object> + </array> </object> + <dictionary class="NSMutableDictionary" key="flattenedProperties"> + <string key="-3.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="-3.ImportedFromIB2"/> + <string key="100292.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="100293.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="100295.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="100295.IBShouldRemoveOnLegacySave"/> + <string key="100310.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="100363.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="100364.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="100365.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="100368.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="100369.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="100370.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="100371.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="100372.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="100374.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="100375.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="100376.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="100377.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="100379.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="100382.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="100385.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="100386.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="100541.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="100543.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="129.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="129.ImportedFromIB2"/> + <string key="130.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="130.ImportedFromIB2"/> + <string key="131.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="131.ImportedFromIB2"/> + <string key="134.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="134.ImportedFromIB2"/> + <string key="136.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="136.ImportedFromIB2"/> + <string key="143.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="143.ImportedFromIB2"/> + <string key="144.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="144.ImportedFromIB2"/> + <string key="145.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="145.ImportedFromIB2"/> + <string key="149.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="149.ImportedFromIB2"/> + <string key="150.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="150.ImportedFromIB2"/> + <string key="157.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="157.ImportedFromIB2"/> + <string key="163.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="163.ImportedFromIB2"/> + <string key="169.IBEditorWindowLastContentRect">{{168, 821}, {113, 23}}</string> + <string key="169.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="169.ImportedFromIB2"/> + <string key="169.editorWindowContentRectSynchronizationRect">{{202, 626}, {154, 153}}</string> + <string key="19.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="19.ImportedFromIB2"/> + <integer value="1" key="196.ImportedFromIB2"/> + <string key="200295.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="200295.IBShouldRemoveOnLegacySave"/> + <string key="203.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="203.ImportedFromIB2"/> + <string key="204.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="204.ImportedFromIB2"/> + <string key="23.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="23.ImportedFromIB2"/> + <string key="24.IBEditorWindowLastContentRect">{{349, 868}, {315, 143}}</string> + <string key="24.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="24.ImportedFromIB2"/> + <string key="24.editorWindowContentRectSynchronizationRect">{{271, 666}, {301, 153}}</string> + <string key="244.IBEditorWindowLastContentRect">{{507, 565}, {484, 308}}</string> + <string key="244.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="244.IBWindowTemplateEditedContentRect">{{507, 565}, {484, 308}}</string> + <integer value="1" key="244.ImportedFromIB2"/> + <string key="244.editorWindowContentRectSynchronizationRect">{{184, 290}, {481, 345}}</string> + <integer value="0" key="244.windowTemplate.hasMaxSize"/> + <integer value="1" key="244.windowTemplate.hasMinSize"/> + <string key="244.windowTemplate.maxSize">{3.40282e+38, 3.40282e+38}</string> + <string key="244.windowTemplate.minSize">{320, 240}</string> + <string key="245.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="245.ImportedFromIB2"/> + <string key="269.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="269.ImportedFromIB2"/> + <string key="270.IBEditorWindowLastContentRect">{{58, 803}, {155, 33}}</string> + <string key="270.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="270.ImportedFromIB2"/> + <string key="270.editorWindowContentRectSynchronizationRect">{{100, 746}, {155, 33}}</string> + <string key="272.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="272.ImportedFromIB2"/> + <string key="285.IBEditorWindowLastContentRect">{{68, 585}, {454, 271}}</string> + <string key="285.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="285.IBViewEditorWindowController.showingBoundsRectangles"/> + <integer value="1" key="285.IBViewEditorWindowController.showingLayoutRectangles"/> + <string key="285.IBWindowTemplateEditedContentRect">{{68, 585}, {454, 271}}</string> + <integer value="1" key="285.ImportedFromIB2"/> + <string key="285.editorWindowContentRectSynchronizationRect">{{433, 406}, {486, 327}}</string> + <integer value="0" key="285.windowTemplate.hasMaxSize"/> + <integer value="1" key="285.windowTemplate.hasMinSize"/> + <string key="285.windowTemplate.maxSize">{3.40282e+38, 3.40282e+38}</string> + <string key="285.windowTemplate.minSize">{320, 240}</string> + <string key="286.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="286.ImportedFromIB2"/> + <string key="29.IBEditorWindowLastContentRect">{{145, 1011}, {336, 20}}</string> + <string key="29.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="29.ImportedFromIB2"/> + <string key="29.editorWindowContentRectSynchronizationRect">{{67, 819}, {336, 20}}</string> + <string key="292.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="292.ImportedFromIB2"/> + <string key="293.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="293.ImportedFromIB2"/> + <string key="295.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="295.ImportedFromIB2"/> + <string key="296.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="296.ImportedFromIB2"/> + <string key="297.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="297.ImportedFromIB2"/> + <string key="298.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="298.ImportedFromIB2"/> + <string key="300295.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="300295.IBShouldRemoveOnLegacySave"/> + <string key="300337.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="300337.ImportedFromIB2"/> + <string key="300338.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="300338.ImportedFromIB2"/> + <string key="300358.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="300358.ImportedFromIB2"/> + <string key="300359.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="300359.ImportedFromIB2"/> + <string key="300360.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="300361.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="300362.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="300362.ImportedFromIB2"/> + <string key="300363.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="300364.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="300364.ImportedFromIB2"/> + <string key="300365.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="300368.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="300368.ImportedFromIB2"/> + <string key="300369.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="300370.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="300370.ImportedFromIB2"/> + <string key="300371.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="300421.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="300421.ImportedFromIB2"/> + <string key="300422.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="300422.ImportedFromIB2"/> + <string key="300423.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="300423.ImportedFromIB2"/> + <string key="300424.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="300424.ImportedFromIB2"/> + <string key="300440.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="300441.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="300447.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="300447.ImportedFromIB2"/> + <string key="300450.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="300451.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="300451.ImportedFromIB2"/> + <string key="300452.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="300453.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="300453.ImportedFromIB2"/> + <string key="300454.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="300455.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="300455.ImportedFromIB2"/> + <string key="300456.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="300457.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="300457.ImportedFromIB2"/> + <string key="300458.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="300459.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="300459.ImportedFromIB2"/> + <string key="300460.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="300472.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="300472.ImportedFromIB2"/> + <string key="300473.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="300476.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="300476.ImportedFromIB2"/> + <string key="300477.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="300477.ImportedFromIB2"/> + <string key="300478.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="300479.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="305.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="305.ImportedFromIB2"/> + <string key="310.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="310.ImportedFromIB2"/> + <string key="348.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="348.ImportedFromIB2"/> + <string key="349.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="349.ImportedFromIB2"/> + <string key="350.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="350.ImportedFromIB2"/> + <string key="351.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="351.ImportedFromIB2"/> + <string key="352.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="352.ImportedFromIB2"/> + <string key="353.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="353.ImportedFromIB2"/> + <string key="354.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="354.ImportedFromIB2"/> + <string key="363.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="363.ImportedFromIB2"/> + <string key="364.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="364.ImportedFromIB2"/> + <string key="365.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="365.ImportedFromIB2"/> + <string key="368.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="368.ImportedFromIB2"/> + <string key="369.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="369.ImportedFromIB2"/> + <string key="370.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="370.ImportedFromIB2"/> + <string key="371.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="371.ImportedFromIB2"/> + <string key="372.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="372.ImportedFromIB2"/> + <string key="374.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="374.ImportedFromIB2"/> + <string key="375.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="375.ImportedFromIB2"/> + <string key="376.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="376.ImportedFromIB2"/> + <string key="377.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="377.ImportedFromIB2"/> + <string key="379.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="379.ImportedFromIB2"/> + <string key="380.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="380.ImportedFromIB2"/> + <string key="381.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="381.ImportedFromIB2"/> + <string key="382.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="382.ImportedFromIB2"/> + <string key="383.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="383.ImportedFromIB2"/> + <string key="384.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="384.ImportedFromIB2"/> + <string key="385.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="385.ImportedFromIB2"/> + <string key="386.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="386.ImportedFromIB2"/> + <string key="419.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="419.ImportedFromIB2"/> + <string key="420.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="420.ImportedFromIB2"/> + <string key="421.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="421.ImportedFromIB2"/> + <string key="423.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="423.ImportedFromIB2"/> + <string key="435.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="435.ImportedFromIB2"/> + <string key="5.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="5.ImportedFromIB2"/> + <string key="524.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="524.ImportedFromIB2"/> + <string key="526.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="526.ImportedFromIB2"/> + <string key="527.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="527.ImportedFromIB2"/> + <string key="532.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="532.ImportedFromIB2"/> + <string key="533.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="533.ImportedFromIB2"/> + <string key="535.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="535.ImportedFromIB2"/> + <string key="536.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="536.ImportedFromIB2"/> + <string key="537.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="537.ImportedFromIB2"/> + <string key="538.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="538.ImportedFromIB2"/> + <string key="541.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="541.ImportedFromIB2"/> + <string key="543.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="543.ImportedFromIB2"/> + <string key="544.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="544.ImportedFromIB2"/> + <string key="545.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="545.ImportedFromIB2"/> + <string key="56.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="56.ImportedFromIB2"/> + <string key="57.IBEditorWindowLastContentRect">{{20, 641}, {218, 203}}</string> + <string key="57.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="57.ImportedFromIB2"/> + <string key="57.editorWindowContentRectSynchronizationRect">{{79, 616}, {218, 203}}</string> + <string key="573.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="573.ImportedFromIB2"/> + <string key="574.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="574.ImportedFromIB2"/> + <string key="575.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="575.ImportedFromIB2"/> + <string key="58.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="58.ImportedFromIB2"/> + <string key="92.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1" key="92.ImportedFromIB2"/> + </dictionary> + <dictionary class="NSMutableDictionary" key="unlocalizedProperties"/> <nil key="activeLocalization"/> - <object class="NSMutableDictionary" key="localizations"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSArray" key="dict.sortedKeys"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - <object class="NSMutableArray" key="dict.values"> - <bool key="EncodedWithXMLCoder">YES</bool> - </object> - </object> + <dictionary class="NSMutableDictionary" key="localizations"/> <nil key="sourceID"/> - <int key="maxID">300475</int> + <int key="maxID">300481</int> </object> <object class="IBClassDescriber" key="IBDocument.Classes"> - <object class="NSMutableArray" key="referencedPartialClassDescriptions"> - <bool key="EncodedWithXMLCoder">YES</bool> + <array class="NSMutableArray" key="referencedPartialClassDescriptions"> <object class="IBPartialClassDescription"> <string key="className">FirstResponder</string> <string key="superclassName">NSObject</string> @@ -3879,131 +3558,81 @@ d2hpY2ggbWF5IHByZXZlbnQgWDExIGFwcGxpY2F0aW9ucyBmcm9tIGxhdW5jaGluZy4</string> <string key="minorKey"/> </object> </object> - </object> - <object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.1+"> - <bool key="EncodedWithXMLCoder">YES</bool> + </array> + <array class="NSMutableArray" key="referencedPartialClassDescriptionsV3.1+"> <object class="IBPartialClassDescription"> <string key="className">X11Controller</string> <string key="superclassName">NSObject</string> - <object class="NSMutableDictionary" key="actions"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSMutableArray" key="dict.sortedKeys"> - <bool key="EncodedWithXMLCoder">YES</bool> - <string>apps_table_delete:</string> - <string>apps_table_done:</string> - <string>apps_table_duplicate:</string> - <string>apps_table_new:</string> - <string>apps_table_show:</string> - <string>bring_to_front:</string> - <string>close_window:</string> - <string>enable_fullscreen_changed:</string> - <string>minimize_window:</string> - <string>next_window:</string> - <string>prefs_changed:</string> - <string>prefs_show:</string> - <string>previous_window:</string> - <string>quit:</string> - <string>toggle_fullscreen:</string> - <string>x11_help:</string> - <string>zoom_window:</string> - </object> - <object class="NSMutableArray" key="dict.values"> - <bool key="EncodedWithXMLCoder">YES</bool> - <string>id</string> - <string>id</string> - <string>id</string> - <string>id</string> - <string>id</string> - <string>id</string> - <string>id</string> - <string>id</string> - <string>id</string> - <string>id</string> - <string>id</string> - <string>id</string> - <string>id</string> - <string>id</string> - <string>id</string> - <string>id</string> - <string>id</string> - </object> - </object> - <object class="NSMutableDictionary" key="outlets"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSMutableArray" key="dict.sortedKeys"> - <bool key="EncodedWithXMLCoder">YES</bool> - <string>apps_separator</string> - <string>apps_table</string> - <string>click_through</string> - <string>copy_menu_item</string> - <string>depth</string> - <string>dock_apps_menu</string> - <string>dock_menu</string> - <string>dock_window_separator</string> - <string>enable_auth</string> - <string>enable_fullscreen</string> - <string>enable_fullscreen_menu</string> - <string>enable_keyequivs</string> - <string>enable_tcp</string> - <string>fake_buttons</string> - <string>focus_follows_mouse</string> - <string>focus_on_new_window</string> - <string>prefs_panel</string> - <string>sync_clipboard_to_pasteboard</string> - <string>sync_keymap</string> - <string>sync_pasteboard</string> - <string>sync_pasteboard_to_clipboard</string> - <string>sync_pasteboard_to_primary</string> - <string>sync_primary_immediately</string> - <string>sync_text1</string> - <string>sync_text2</string> - <string>toggle_fullscreen_item</string> - <string>use_sysbeep</string> - <string>window_separator</string> - <string>x11_about_item</string> - </object> - <object class="NSMutableArray" key="dict.values"> - <bool key="EncodedWithXMLCoder">YES</bool> - <string>NSMenuItem</string> - <string>NSTableView</string> - <string>NSButton</string> - <string>NSMenuItem</string> - <string>NSPopUpButton</string> - <string>NSMenu</string> - <string>NSMenu</string> - <string>NSMenuItem</string> - <string>NSButton</string> - <string>NSButton</string> - <string>NSButton</string> - <string>NSButton</string> - <string>NSButton</string> - <string>NSButton</string> - <string>NSButton</string> - <string>NSButton</string> - <string>NSPanel</string> - <string>NSButton</string> - <string>NSButton</string> - <string>NSButton</string> - <string>NSButton</string> - <string>NSButton</string> - <string>NSButton</string> - <string>NSTextField</string> - <string>NSTextField</string> - <string>NSMenuItem</string> - <string>NSButton</string> - <string>NSMenuItem</string> - <string>NSMenuItem</string> - </object> - </object> + <dictionary class="NSMutableDictionary" key="actions"> + <string key="apps_table_delete:">id</string> + <string key="apps_table_done:">id</string> + <string key="apps_table_duplicate:">id</string> + <string key="apps_table_new:">id</string> + <string key="apps_table_show:">id</string> + <string key="bring_to_front:">id</string> + <string key="close_window:">id</string> + <string key="enable_fullscreen_changed:">id</string> + <string key="minimize_window:">id</string> + <string key="next_window:">id</string> + <string key="prefs_changed:">id</string> + <string key="prefs_show:">id</string> + <string key="previous_window:">id</string> + <string key="quit:">id</string> + <string key="toggle_fullscreen:">id</string> + <string key="x11_help:">id</string> + <string key="zoom_window:">id</string> + </dictionary> + <dictionary class="NSMutableDictionary" key="outlets"> + <string key="apps_separator">NSMenuItem</string> + <string key="apps_table">NSTableView</string> + <string key="click_through">NSButton</string> + <string key="copy_menu_item">NSMenuItem</string> + <string key="depth">NSPopUpButton</string> + <string key="dock_apps_menu">NSMenu</string> + <string key="dock_menu">NSMenu</string> + <string key="dock_window_separator">NSMenuItem</string> + <string key="enable_auth">NSButton</string> + <string key="enable_fullscreen">NSButton</string> + <string key="enable_fullscreen_menu">NSButton</string> + <string key="enable_keyequivs">NSButton</string> + <string key="enable_tcp">NSButton</string> + <string key="fake_buttons">NSButton</string> + <string key="focus_follows_mouse">NSButton</string> + <string key="focus_on_new_window">NSButton</string> + <string key="option_sends_alt">NSButton</string> + <string key="prefs_panel">NSPanel</string> + <string key="sync_clipboard_to_pasteboard">NSButton</string> + <string key="sync_keymap">NSButton</string> + <string key="sync_pasteboard">NSButton</string> + <string key="sync_pasteboard_to_clipboard">NSButton</string> + <string key="sync_pasteboard_to_primary">NSButton</string> + <string key="sync_primary_immediately">NSButton</string> + <string key="sync_text1">NSTextField</string> + <string key="sync_text2">NSTextField</string> + <string key="toggle_fullscreen_item">NSMenuItem</string> + <string key="use_sysbeep">NSButton</string> + <string key="window_separator">NSMenuItem</string> + <string key="x11_about_item">NSMenuItem</string> + </dictionary> <object class="IBClassDescriptionSource" key="sourceIdentifier"> <string key="majorKey">IBDocumentRelativeSource</string> <string key="minorKey">../../../X11Controller.h</string> </object> </object> - </object> + </array> </object> <int key="IBDocument.localizationMode">0</int> + <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string> + <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies"> + <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string> + <integer value="1040" key="NS.object.0"/> + </object> + <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool> <string key="IBDocument.LastKnownRelativeProjectPath">../X11.xcodeproj</string> <int key="IBDocument.defaultPropertyAccessControl">3</int> + <dictionary class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes"> + <string key="NSMenuCheckmark">{9, 8}</string> + <string key="NSMenuMixedState">{7, 2}</string> + </dictionary> </data> </archive> diff --git a/xorg-server/hw/xquartz/bundle/Resources/English.lproj/main.nib/keyedobjects.nib b/xorg-server/hw/xquartz/bundle/Resources/English.lproj/main.nib/keyedobjects.nib Binary files differindex fee8f1ce9..888424dfc 100644 --- a/xorg-server/hw/xquartz/bundle/Resources/English.lproj/main.nib/keyedobjects.nib +++ b/xorg-server/hw/xquartz/bundle/Resources/English.lproj/main.nib/keyedobjects.nib diff --git a/xorg-server/hw/xquartz/bundle/Resources/French.lproj/Localizable.strings b/xorg-server/hw/xquartz/bundle/Resources/French.lproj/Localizable.strings Binary files differindex 1dd2e0601..81ecfc14b 100644 --- a/xorg-server/hw/xquartz/bundle/Resources/French.lproj/Localizable.strings +++ b/xorg-server/hw/xquartz/bundle/Resources/French.lproj/Localizable.strings diff --git a/xorg-server/hw/xquartz/bundle/Resources/French.lproj/main.nib/keyedobjects.nib b/xorg-server/hw/xquartz/bundle/Resources/French.lproj/main.nib/keyedobjects.nib Binary files differindex 9c65224a7..689405d29 100644 --- a/xorg-server/hw/xquartz/bundle/Resources/French.lproj/main.nib/keyedobjects.nib +++ b/xorg-server/hw/xquartz/bundle/Resources/French.lproj/main.nib/keyedobjects.nib diff --git a/xorg-server/hw/xquartz/bundle/Resources/German.lproj/Localizable.strings b/xorg-server/hw/xquartz/bundle/Resources/German.lproj/Localizable.strings Binary files differindex 48c4e29c4..8c29a2b57 100644 --- a/xorg-server/hw/xquartz/bundle/Resources/German.lproj/Localizable.strings +++ b/xorg-server/hw/xquartz/bundle/Resources/German.lproj/Localizable.strings diff --git a/xorg-server/hw/xquartz/bundle/Resources/German.lproj/main.nib/keyedobjects.nib b/xorg-server/hw/xquartz/bundle/Resources/German.lproj/main.nib/keyedobjects.nib Binary files differindex 1cc64172e..467adef59 100644 --- a/xorg-server/hw/xquartz/bundle/Resources/German.lproj/main.nib/keyedobjects.nib +++ b/xorg-server/hw/xquartz/bundle/Resources/German.lproj/main.nib/keyedobjects.nib diff --git a/xorg-server/hw/xquartz/bundle/Resources/Italian.lproj/Localizable.strings b/xorg-server/hw/xquartz/bundle/Resources/Italian.lproj/Localizable.strings Binary files differindex 560a1fe40..de1d777bb 100644 --- a/xorg-server/hw/xquartz/bundle/Resources/Italian.lproj/Localizable.strings +++ b/xorg-server/hw/xquartz/bundle/Resources/Italian.lproj/Localizable.strings diff --git a/xorg-server/hw/xquartz/bundle/Resources/Italian.lproj/main.nib/keyedobjects.nib b/xorg-server/hw/xquartz/bundle/Resources/Italian.lproj/main.nib/keyedobjects.nib Binary files differindex 3c95f407b..74222e9c3 100644 --- a/xorg-server/hw/xquartz/bundle/Resources/Italian.lproj/main.nib/keyedobjects.nib +++ b/xorg-server/hw/xquartz/bundle/Resources/Italian.lproj/main.nib/keyedobjects.nib diff --git a/xorg-server/hw/xquartz/bundle/Resources/Japanese.lproj/Localizable.strings b/xorg-server/hw/xquartz/bundle/Resources/Japanese.lproj/Localizable.strings Binary files differindex 23c1879a7..54adc1670 100644 --- a/xorg-server/hw/xquartz/bundle/Resources/Japanese.lproj/Localizable.strings +++ b/xorg-server/hw/xquartz/bundle/Resources/Japanese.lproj/Localizable.strings diff --git a/xorg-server/hw/xquartz/bundle/Resources/Japanese.lproj/main.nib/keyedobjects.nib b/xorg-server/hw/xquartz/bundle/Resources/Japanese.lproj/main.nib/keyedobjects.nib Binary files differindex 7c96bfaec..7728acbb0 100644 --- a/xorg-server/hw/xquartz/bundle/Resources/Japanese.lproj/main.nib/keyedobjects.nib +++ b/xorg-server/hw/xquartz/bundle/Resources/Japanese.lproj/main.nib/keyedobjects.nib diff --git a/xorg-server/hw/xquartz/bundle/Resources/Spanish.lproj/Localizable.strings b/xorg-server/hw/xquartz/bundle/Resources/Spanish.lproj/Localizable.strings Binary files differindex 156f61841..ec90bf90c 100644 --- a/xorg-server/hw/xquartz/bundle/Resources/Spanish.lproj/Localizable.strings +++ b/xorg-server/hw/xquartz/bundle/Resources/Spanish.lproj/Localizable.strings diff --git a/xorg-server/hw/xquartz/bundle/Resources/Spanish.lproj/main.nib/keyedobjects.nib b/xorg-server/hw/xquartz/bundle/Resources/Spanish.lproj/main.nib/keyedobjects.nib Binary files differindex 7e584058b..408b7eea2 100644 --- a/xorg-server/hw/xquartz/bundle/Resources/Spanish.lproj/main.nib/keyedobjects.nib +++ b/xorg-server/hw/xquartz/bundle/Resources/Spanish.lproj/main.nib/keyedobjects.nib diff --git a/xorg-server/hw/xquartz/bundle/Resources/da.lproj/Localizable.strings b/xorg-server/hw/xquartz/bundle/Resources/da.lproj/Localizable.strings Binary files differindex dfe842313..e40b4d126 100644 --- a/xorg-server/hw/xquartz/bundle/Resources/da.lproj/Localizable.strings +++ b/xorg-server/hw/xquartz/bundle/Resources/da.lproj/Localizable.strings diff --git a/xorg-server/hw/xquartz/bundle/Resources/da.lproj/main.nib/keyedobjects.nib b/xorg-server/hw/xquartz/bundle/Resources/da.lproj/main.nib/keyedobjects.nib Binary files differindex df8c01bf4..e0c669aa2 100644 --- a/xorg-server/hw/xquartz/bundle/Resources/da.lproj/main.nib/keyedobjects.nib +++ b/xorg-server/hw/xquartz/bundle/Resources/da.lproj/main.nib/keyedobjects.nib diff --git a/xorg-server/hw/xquartz/bundle/Resources/fi.lproj/Localizable.strings b/xorg-server/hw/xquartz/bundle/Resources/fi.lproj/Localizable.strings Binary files differindex 7135063cc..f7c621915 100644 --- a/xorg-server/hw/xquartz/bundle/Resources/fi.lproj/Localizable.strings +++ b/xorg-server/hw/xquartz/bundle/Resources/fi.lproj/Localizable.strings diff --git a/xorg-server/hw/xquartz/bundle/Resources/fi.lproj/main.nib/keyedobjects.nib b/xorg-server/hw/xquartz/bundle/Resources/fi.lproj/main.nib/keyedobjects.nib Binary files differindex e444ebf40..b84872e19 100644 --- a/xorg-server/hw/xquartz/bundle/Resources/fi.lproj/main.nib/keyedobjects.nib +++ b/xorg-server/hw/xquartz/bundle/Resources/fi.lproj/main.nib/keyedobjects.nib diff --git a/xorg-server/hw/xquartz/bundle/Resources/ko.lproj/Localizable.strings b/xorg-server/hw/xquartz/bundle/Resources/ko.lproj/Localizable.strings Binary files differindex 33e0da528..60c9f8830 100644 --- a/xorg-server/hw/xquartz/bundle/Resources/ko.lproj/Localizable.strings +++ b/xorg-server/hw/xquartz/bundle/Resources/ko.lproj/Localizable.strings diff --git a/xorg-server/hw/xquartz/bundle/Resources/ko.lproj/main.nib/keyedobjects.nib b/xorg-server/hw/xquartz/bundle/Resources/ko.lproj/main.nib/keyedobjects.nib Binary files differindex f8d3ac4b0..f60e5d4e7 100644 --- a/xorg-server/hw/xquartz/bundle/Resources/ko.lproj/main.nib/keyedobjects.nib +++ b/xorg-server/hw/xquartz/bundle/Resources/ko.lproj/main.nib/keyedobjects.nib diff --git a/xorg-server/hw/xquartz/bundle/Resources/no.lproj/Localizable.strings b/xorg-server/hw/xquartz/bundle/Resources/no.lproj/Localizable.strings Binary files differindex 68d86fd78..506282a4e 100644 --- a/xorg-server/hw/xquartz/bundle/Resources/no.lproj/Localizable.strings +++ b/xorg-server/hw/xquartz/bundle/Resources/no.lproj/Localizable.strings diff --git a/xorg-server/hw/xquartz/bundle/Resources/no.lproj/main.nib/keyedobjects.nib b/xorg-server/hw/xquartz/bundle/Resources/no.lproj/main.nib/keyedobjects.nib Binary files differindex 562302f71..30933f438 100644 --- a/xorg-server/hw/xquartz/bundle/Resources/no.lproj/main.nib/keyedobjects.nib +++ b/xorg-server/hw/xquartz/bundle/Resources/no.lproj/main.nib/keyedobjects.nib diff --git a/xorg-server/hw/xquartz/bundle/Resources/pl.lproj/Localizable.strings b/xorg-server/hw/xquartz/bundle/Resources/pl.lproj/Localizable.strings Binary files differindex 9a709d306..fe1ebfedd 100644 --- a/xorg-server/hw/xquartz/bundle/Resources/pl.lproj/Localizable.strings +++ b/xorg-server/hw/xquartz/bundle/Resources/pl.lproj/Localizable.strings diff --git a/xorg-server/hw/xquartz/bundle/Resources/pl.lproj/main.nib/keyedobjects.nib b/xorg-server/hw/xquartz/bundle/Resources/pl.lproj/main.nib/keyedobjects.nib Binary files differindex d9aedb230..e20f6bf99 100644 --- a/xorg-server/hw/xquartz/bundle/Resources/pl.lproj/main.nib/keyedobjects.nib +++ b/xorg-server/hw/xquartz/bundle/Resources/pl.lproj/main.nib/keyedobjects.nib diff --git a/xorg-server/hw/xquartz/bundle/Resources/pt.lproj/Localizable.strings b/xorg-server/hw/xquartz/bundle/Resources/pt.lproj/Localizable.strings Binary files differindex 8cd9fecef..026c9db6e 100644 --- a/xorg-server/hw/xquartz/bundle/Resources/pt.lproj/Localizable.strings +++ b/xorg-server/hw/xquartz/bundle/Resources/pt.lproj/Localizable.strings diff --git a/xorg-server/hw/xquartz/bundle/Resources/pt.lproj/main.nib/keyedobjects.nib b/xorg-server/hw/xquartz/bundle/Resources/pt.lproj/main.nib/keyedobjects.nib Binary files differindex 3dbd44f7a..5f08c8bf2 100644 --- a/xorg-server/hw/xquartz/bundle/Resources/pt.lproj/main.nib/keyedobjects.nib +++ b/xorg-server/hw/xquartz/bundle/Resources/pt.lproj/main.nib/keyedobjects.nib diff --git a/xorg-server/hw/xquartz/bundle/Resources/pt_PT.lproj/Localizable.strings b/xorg-server/hw/xquartz/bundle/Resources/pt_PT.lproj/Localizable.strings Binary files differindex 72d22b5d6..74bd3a0dc 100644 --- a/xorg-server/hw/xquartz/bundle/Resources/pt_PT.lproj/Localizable.strings +++ b/xorg-server/hw/xquartz/bundle/Resources/pt_PT.lproj/Localizable.strings diff --git a/xorg-server/hw/xquartz/bundle/Resources/pt_PT.lproj/main.nib/keyedobjects.nib b/xorg-server/hw/xquartz/bundle/Resources/pt_PT.lproj/main.nib/keyedobjects.nib Binary files differindex e48620b80..ff75065ec 100644 --- a/xorg-server/hw/xquartz/bundle/Resources/pt_PT.lproj/main.nib/keyedobjects.nib +++ b/xorg-server/hw/xquartz/bundle/Resources/pt_PT.lproj/main.nib/keyedobjects.nib diff --git a/xorg-server/hw/xquartz/bundle/Resources/ru.lproj/Localizable.strings b/xorg-server/hw/xquartz/bundle/Resources/ru.lproj/Localizable.strings Binary files differindex f172a8f72..dde9c3dce 100644 --- a/xorg-server/hw/xquartz/bundle/Resources/ru.lproj/Localizable.strings +++ b/xorg-server/hw/xquartz/bundle/Resources/ru.lproj/Localizable.strings diff --git a/xorg-server/hw/xquartz/bundle/Resources/ru.lproj/main.nib/keyedobjects.nib b/xorg-server/hw/xquartz/bundle/Resources/ru.lproj/main.nib/keyedobjects.nib Binary files differindex 5e11dcc78..0342bb5de 100644 --- a/xorg-server/hw/xquartz/bundle/Resources/ru.lproj/main.nib/keyedobjects.nib +++ b/xorg-server/hw/xquartz/bundle/Resources/ru.lproj/main.nib/keyedobjects.nib diff --git a/xorg-server/hw/xquartz/bundle/Resources/sv.lproj/Localizable.strings b/xorg-server/hw/xquartz/bundle/Resources/sv.lproj/Localizable.strings Binary files differindex ccd68d059..c0cbdfb9b 100644 --- a/xorg-server/hw/xquartz/bundle/Resources/sv.lproj/Localizable.strings +++ b/xorg-server/hw/xquartz/bundle/Resources/sv.lproj/Localizable.strings diff --git a/xorg-server/hw/xquartz/bundle/Resources/sv.lproj/main.nib/keyedobjects.nib b/xorg-server/hw/xquartz/bundle/Resources/sv.lproj/main.nib/keyedobjects.nib Binary files differindex 897aefa80..122483d6e 100644 --- a/xorg-server/hw/xquartz/bundle/Resources/sv.lproj/main.nib/keyedobjects.nib +++ b/xorg-server/hw/xquartz/bundle/Resources/sv.lproj/main.nib/keyedobjects.nib diff --git a/xorg-server/hw/xquartz/bundle/Resources/zh_CN.lproj/Localizable.strings b/xorg-server/hw/xquartz/bundle/Resources/zh_CN.lproj/Localizable.strings Binary files differindex 8be59dade..7706fe541 100644 --- a/xorg-server/hw/xquartz/bundle/Resources/zh_CN.lproj/Localizable.strings +++ b/xorg-server/hw/xquartz/bundle/Resources/zh_CN.lproj/Localizable.strings diff --git a/xorg-server/hw/xquartz/bundle/Resources/zh_CN.lproj/main.nib/keyedobjects.nib b/xorg-server/hw/xquartz/bundle/Resources/zh_CN.lproj/main.nib/keyedobjects.nib Binary files differindex 663ae241e..6ceb04350 100644 --- a/xorg-server/hw/xquartz/bundle/Resources/zh_CN.lproj/main.nib/keyedobjects.nib +++ b/xorg-server/hw/xquartz/bundle/Resources/zh_CN.lproj/main.nib/keyedobjects.nib diff --git a/xorg-server/hw/xquartz/bundle/Resources/zh_TW.lproj/Localizable.strings b/xorg-server/hw/xquartz/bundle/Resources/zh_TW.lproj/Localizable.strings Binary files differindex ba09668c0..2bce6475f 100644 --- a/xorg-server/hw/xquartz/bundle/Resources/zh_TW.lproj/Localizable.strings +++ b/xorg-server/hw/xquartz/bundle/Resources/zh_TW.lproj/Localizable.strings diff --git a/xorg-server/hw/xquartz/bundle/Resources/zh_TW.lproj/main.nib/keyedobjects.nib b/xorg-server/hw/xquartz/bundle/Resources/zh_TW.lproj/main.nib/keyedobjects.nib Binary files differindex 12c5a14e8..b65ef07e2 100644 --- a/xorg-server/hw/xquartz/bundle/Resources/zh_TW.lproj/main.nib/keyedobjects.nib +++ b/xorg-server/hw/xquartz/bundle/Resources/zh_TW.lproj/main.nib/keyedobjects.nib diff --git a/xorg-server/hw/xquartz/doc/Makefile.am b/xorg-server/hw/xquartz/doc/Makefile.am index 7310de353..6c68c845e 100644 --- a/xorg-server/hw/xquartz/doc/Makefile.am +++ b/xorg-server/hw/xquartz/doc/Makefile.am @@ -7,6 +7,8 @@ CLEANFILES = $(appman_PROCESSED) $(appman_DATA) include $(top_srcdir)/cpprules.in +MANDEFS += -D__laucnd_id_prefix__=$(LAUNCHD_ID_PREFIX) + .man.$(APP_MAN_SUFFIX): $(AM_V_at)cp $< $@ diff --git a/xorg-server/hw/xquartz/doc/Xquartz.man.pre b/xorg-server/hw/xquartz/doc/Xquartz.man.pre index 04bbee30c..447194740 100644 --- a/xorg-server/hw/xquartz/doc/Xquartz.man.pre +++ b/xorg-server/hw/xquartz/doc/Xquartz.man.pre @@ -16,69 +16,72 @@ OS X handles the desktop background. .SH CUSTOMIZATION \fIXquartz\fP can be customized using the defaults(1) command. The available options are: .TP 8 -.B defaults write org.x.X11 enable_fake_buttons -boolean true +.B defaults write __laucnd_id_prefix__.X11 enable_fake_buttons -boolean true Emulates a 3 button mouse using modifier keys. By default, the Command modifier is used to emulate button 2 and Option is used for button 3. Thus, clicking the first mouse button while holding down Command will act like clicking button 2. Holding down Option will simulate button 3. .TP 8 -.B defaults write org.x.X11 fake_button2 \fImodifiers\fP +.B defaults write __laucnd_id_prefix__.X11 fake_button2 \fImodifiers\fP Change the modifier keys used to emulate the second mouse button. By default, Command is used to emulate the second button. Any combination of the following modifier names may be used: {l,r,}shift, {l,r,}option, {l,r,}control, {l,r,}command, fn .TP 8 -.B defaults write org.x.X11 fake_button3 \fImodifiers\fP +.B defaults write __laucnd_id_prefix__.X11 fake_button3 \fImodifiers\fP Change the modifier keys used to emulate the second mouse button. By default, Command is used to emulate the second button. Any combination of the following modifier names may be used: {l,r,}shift, {l,r,}option, {l,r,}control, {l,r,}command, fn .TP 8 -.B defaults write org.x.X11 fullscreen_hotkeys -boolean true +.B defaults write __laucnd_id_prefix__.X11 fullscreen_hotkeys -boolean true Enable OSX hotkeys while in fullscreen .TP 8 -.B defaults write org.x.X11 fullscreen_menu -boolean true +.B defaults write __laucnd_id_prefix__.X11 fullscreen_menu -boolean true Show the OSX menu while in fullscreen .TP 8 -.B defaults write org.x.X11 no_quit_alert -boolean true +.B defaults write __laucnd_id_prefix__.X11 no_quit_alert -boolean true Disables the alert dialog displayed when attempting to quit X11. .TP 8 -.B defaults write org.x.X11 no_auth -boolean true +.B defaults write __laucnd_id_prefix__.X11 no_auth -boolean true Stops the X server requiring that clients authenticate themselves when connecting. See Xsecurity(__miscmansuffix__). .TP 8 -.B defaults write org.x.X11 nolisten_tcp -boolean false +.B defaults write __laucnd_id_prefix__.X11 nolisten_tcp -boolean false This will tell the server to listen and accept TCP connections. Doing this without enabling xauth is a possible security concern. See Xsecurity(__miscmansuffix__). .TP 8 -.B defaults write org.x.X11 enable_system_beep -boolean false +.B defaults write __laucnd_id_prefix__.X11 enable_system_beep -boolean false Don't use the standard system beep effect for X11 alerts. .TP 8 -.B defaults write org.x.X11 enable_key_equivalents -boolean false +.B defaults write __laucnd_id_prefix__.X11 enable_key_equivalents -boolean false Disable menu keyboard equivalents while X11 windows are focused. .TP 8 -.B defaults write org.x.X11 depth \fIdepth\fP +.B defaults write __laucnd_id_prefix__.X11 depth \fIdepth\fP Specifies the color bit depth to use. Currently only 15, and 24 color bits per pixel are supported. If not specified, or a value of -1 is specified, defaults to the depth of the main display. .TP 8 -.B defaults write org.x.X11 sync_keymap -boolean true +.B defaults write __laucnd_id_prefix__.X11 sync_keymap -boolean true Keep the X11 keymap up to date with the OSX system keymap. .TP 8 -.B defaults write org.x.X11 sync_pasteboard -boolean true +.B defaults write __laucnd_id_prefix__.X11 option_sends_alt -boolean true +The Option key will send Alt_L and Alt_R instead of Mode_switch. +.TP 8 +.B defaults write __laucnd_id_prefix__.X11 sync_pasteboard -boolean true Enable syncing between the OSX pasteboard and clipboard/primary selection buffers in X11. This option needs to be true for any of the other pasteboard sync options to have an effect. .TP 8 -.B defaults write org.x.X11 sync_pasteboard_to_clipboard -boolean true +.B defaults write __laucnd_id_prefix__.X11 sync_pasteboard_to_clipboard -boolean true Update the X11 CLIPBOARD when the OSX NSPasteboard is updated. .TP 8 -.B defaults write org.x.X11 sync_pasteboard_to_primary -boolean true +.B defaults write __laucnd_id_prefix__.X11 sync_pasteboard_to_primary -boolean true Update the the X11 PRIMARY buffer when the OSX NSPasteboard is updated. .TP 8 -.B defaults write org.x.X11 sync_clipboard_to_pasteboard -boolean true +.B defaults write __laucnd_id_prefix__.X11 sync_clipboard_to_pasteboard -boolean true Update the the OSX NSPasteboard when the X11 CLIPBOARD is updated. Note that enabling this option causes the clipboard synchronization to act as a clipboard manager in X11. This makes it impossible to use xclipboard, klipper, or any other such clipboard managers. If you want to use any of these programs, you must disable this option. .TP 8 -.B defaults write org.x.X11 sync_primary_on_select -boolean true +.B defaults write __laucnd_id_prefix__.X11 sync_primary_on_select -boolean true This option defaults to false and is provided only "for experts." It updates the NSPasteboard whenever a new X11 selection is made (rather than requiring you to hit cmd-c to copy the selection to the NSPasteboard). Since the X11 protocol does not require applications to send notification when they change selection, this might not work in all cases (if you run into this problem, try selecting text in another application first, then selecting the text you want). .TP 8 -.B defaults write org.x.X11 enable_test_extensions -boolean true +.B defaults write __laucnd_id_prefix__.X11 enable_test_extensions -boolean true This option defaults to false and is only accessible through the command line. Enable this option to turn on the DEC-XTRAP, RECORD, and XTEST extensions in the server. .SH OPTIONS .PP diff --git a/xorg-server/hw/xquartz/quartz.c b/xorg-server/hw/xquartz/quartz.c index a611854e7..a8c0d4b47 100644 --- a/xorg-server/hw/xquartz/quartz.c +++ b/xorg-server/hw/xquartz/quartz.c @@ -79,6 +79,7 @@ int aquaMenuBarHeight = 0; QuartzModeProcsPtr quartzProcs = NULL; const char *quartzOpenGLBundle = NULL; int quartzFullscreenDisableHotkeys = TRUE; +int quartzOptionSendsAlt = FALSE; #if defined(RANDR) && !defined(FAKE_RANDR) Bool QuartzRandRGetInfo (ScreenPtr pScreen, Rotation *rotations) { diff --git a/xorg-server/hw/xquartz/quartzCommon.h b/xorg-server/hw/xquartz/quartzCommon.h index 1c0eeba9c..8ab70f22a 100644 --- a/xorg-server/hw/xquartz/quartzCommon.h +++ b/xorg-server/hw/xquartz/quartzCommon.h @@ -60,6 +60,7 @@ extern int focusOnNewWindow; extern int quartzUseAGL; extern int quartzEnableKeyEquivalents; extern int quartzFullscreenDisableHotkeys; +extern int quartzOptionSendsAlt; // Other shared data extern int quartzServerVisible; diff --git a/xorg-server/hw/xquartz/quartzKeyboard.c b/xorg-server/hw/xquartz/quartzKeyboard.c index a4a0b08bd..745333f03 100644 --- a/xorg-server/hw/xquartz/quartzKeyboard.c +++ b/xorg-server/hw/xquartz/quartzKeyboard.c @@ -39,6 +39,7 @@ #define HACK_MISSING 1 #define HACK_KEYPAD 1 +#define HACK_BLACKLIST 1 #include <unistd.h> #include <stdio.h> @@ -49,6 +50,7 @@ #include "quartzCommon.h" #include "darwin.h" +#include "darwinEvents.h" #include "quartzKeyboard.h" #include "quartzAudio.h" @@ -83,6 +85,7 @@ enum { #define UKEYSYM(u) ((u) | 0x01000000) +#if HACK_MISSING /* Table of keycode->keysym mappings we use to fallback on for important keys that are often not in the Unicode mapping. */ @@ -117,7 +120,9 @@ const static struct { {107, XK_F14}, {113, XK_F15}, }; +#endif +#if HACK_KEYPAD /* Table of keycode->old,new-keysym mappings we use to fixup the numeric keypad entries. */ @@ -143,6 +148,17 @@ const static struct { {91, XK_8, XK_KP_8}, {92, XK_9, XK_KP_9}, }; +#endif + +#if HACK_BLACKLIST +/* <rdar://problem/7824370> wine notepad produces wrong characters on shift+arrow + * http://xquartz.macosforge.org/trac/ticket/295 + * http://developer.apple.com/legacy/mac/library/documentation/mac/Text/Text-579.html + * + * legacy Mac keycodes for arrow keys that shift-modify to math symbols + */ +const static unsigned short keycode_blacklist[] = {66, 70, 72, 77}; +#endif /* Table mapping normal keysyms to their dead equivalents. FIXME: all the unicode keysyms (apart from circumflex) were guessed. */ @@ -176,6 +192,12 @@ const static struct { {UKEYSYM (0x31b), XK_dead_horn}, /* COMBINING HORN */ }; +typedef struct darwinKeyboardInfo_struct { + CARD8 modMap[MAP_LENGTH]; + KeySym keyMap[MAP_LENGTH * GLYPHS_PER_KEY]; + unsigned char modifierKeycodes[32][2]; +} darwinKeyboardInfo; + darwinKeyboardInfo keyInfo; pthread_mutex_t keyInfo_mutex = PTHREAD_MUTEX_INITIALIZER; @@ -240,7 +262,8 @@ static void DarwinBuildModifierMaps(darwinKeyboardInfo *info) { case XK_Alt_L: info->modifierKeycodes[NX_MODIFIERKEY_ALTERNATE][0] = i; info->modMap[MIN_KEYCODE + i] = Mod1Mask; - *k = XK_Mode_switch; // Yes, this is ugly. This needs to be cleaned up when we integrate quartzKeyboard with this code and refactor. + if(!quartzOptionSendsAlt) + *k = XK_Mode_switch; // Yes, this is ugly. This needs to be cleaned up when we integrate quartzKeyboard with this code and refactor. break; case XK_Alt_R: @@ -249,7 +272,8 @@ static void DarwinBuildModifierMaps(darwinKeyboardInfo *info) { #else info->modifierKeycodes[NX_MODIFIERKEY_ALTERNATE][0] = i; #endif - *k = XK_Mode_switch; // Yes, this is ugly. This needs to be cleaned up when we integrate quartzKeyboard with this code and refactor. + if(!quartzOptionSendsAlt) + *k = XK_Mode_switch; // Yes, this is ugly. This needs to be cleaned up when we integrate quartzKeyboard with this code and refactor. info->modMap[MIN_KEYCODE + i] = Mod1Mask; break; @@ -632,7 +656,7 @@ static KeySym make_dead_key(KeySym in) { return in; } -Bool QuartzReadSystemKeymap(darwinKeyboardInfo *info) { +static Bool QuartzReadSystemKeymap(darwinKeyboardInfo *info) { #if !defined(__LP64__) || MAC_OS_X_VERSION_MIN_REQUIRED < 1050 KeyboardLayoutRef key_layout; int is_uchr = 1; @@ -772,34 +796,55 @@ Bool QuartzReadSystemKeymap(darwinKeyboardInfo *info) { if (k[3] == k[2]) k[3] = NoSymbol; if (k[1] == k[0]) k[1] = NoSymbol; if (k[0] == k[2] && k[1] == k[3]) k[2] = k[3] = NoSymbol; + if (k[3] == k[0] && k[2] == k[1] && k[2] == NoSymbol) k[3] = NoSymbol; } +#if HACK_MISSING /* Fix up some things that are normally missing.. */ - - if (HACK_MISSING) { - for (i = 0; i < sizeof (known_keys) / sizeof (known_keys[0]); i++) { - k = info->keyMap + known_keys[i].keycode * GLYPHS_PER_KEY; - - if (k[0] == NoSymbol && k[1] == NoSymbol - && k[2] == NoSymbol && k[3] == NoSymbol) - k[0] = known_keys[i].keysym; - } + + for (i = 0; i < sizeof (known_keys) / sizeof (known_keys[0]); i++) { + k = info->keyMap + known_keys[i].keycode * GLYPHS_PER_KEY; + + if ( k[0] == NoSymbol && k[1] == NoSymbol + && k[2] == NoSymbol && k[3] == NoSymbol) + k[0] = known_keys[i].keysym; } - +#endif + +#if HACK_KEYPAD /* And some more things. We find the right symbols for the numeric - keypad, but not the KP_ keysyms. So try to convert known keycodes. */ - - if (HACK_KEYPAD) { - for (i = 0; i < sizeof (known_numeric_keys) - / sizeof (known_numeric_keys[0]); i++) { - k = info->keyMap + known_numeric_keys[i].keycode * GLYPHS_PER_KEY; - - if (k[0] == known_numeric_keys[i].normal) - k[0] = known_numeric_keys[i].keypad; - } + keypad, but not the KP_ keysyms. So try to convert known keycodes. */ + for (i = 0; i < sizeof (known_numeric_keys) / sizeof (known_numeric_keys[0]); i++) { + k = info->keyMap + known_numeric_keys[i].keycode * GLYPHS_PER_KEY; + + if (k[0] == known_numeric_keys[i].normal) + k[0] = known_numeric_keys[i].keypad; } +#endif + +#if HACK_BLACKLIST + for (i = 0; i < sizeof (keycode_blacklist) / sizeof (keycode_blacklist[0]); i++) { + k = info->keyMap + keycode_blacklist[i] * GLYPHS_PER_KEY; + k[0] = k[1] = k[2] = k[3] = NoSymbol; + } +#endif DarwinBuildModifierMaps(info); return TRUE; } + +Bool QuartsResyncKeymap(Bool sendDDXEvent) { + Bool retval; + /* Update keyInfo */ + pthread_mutex_lock(&keyInfo_mutex); + memset(keyInfo.keyMap, 0, sizeof(keyInfo.keyMap)); + retval = QuartzReadSystemKeymap(&keyInfo); + pthread_mutex_unlock(&keyInfo_mutex); + + /* Tell server thread to deal with new keyInfo */ + if(sendDDXEvent) + DarwinSendDDXEvent(kXquartzReloadKeymap, 0); + + return retval; +} diff --git a/xorg-server/hw/xquartz/quartzKeyboard.h b/xorg-server/hw/xquartz/quartzKeyboard.h index 1aaec6ef2..1151a0035 100644 --- a/xorg-server/hw/xquartz/quartzKeyboard.h +++ b/xorg-server/hw/xquartz/quartzKeyboard.h @@ -41,18 +41,10 @@ #define MIN_KEYCODE XkbMinLegalKeyCode // unfortunately, this isn't 0... #define MAX_KEYCODE NUM_KEYCODES + MIN_KEYCODE - 1 -typedef struct darwinKeyboardInfo_struct { - CARD8 modMap[MAP_LENGTH]; - KeySym keyMap[MAP_LENGTH * GLYPHS_PER_KEY]; - unsigned char modifierKeycodes[32][2]; -} darwinKeyboardInfo; - /* These functions need to be implemented by Xquartz, XDarwin, etc. */ -Bool QuartzReadSystemKeymap(darwinKeyboardInfo *info); +Bool QuartsResyncKeymap(Bool sendDDXEvent); /* Provided for darwinEvents.c */ -extern darwinKeyboardInfo keyInfo; -extern pthread_mutex_t keyInfo_mutex; void DarwinKeyboardReloadHandler(void); int DarwinModifierNXKeycodeToNXKey(unsigned char keycode, int *outSide); int DarwinModifierNXKeyToNXKeycode(int key, int side); diff --git a/xorg-server/include/input.h b/xorg-server/include/input.h index 36de5044d..efa070c4f 100644 --- a/xorg-server/include/input.h +++ b/xorg-server/include/input.h @@ -432,7 +432,7 @@ extern void CreateClassesChangedEvent(EventListPtr event, DeviceIntPtr master,
DeviceIntPtr slave,
int type);
-extern int GetPointerEvents(
+extern _X_EXPORT int GetPointerEvents(
EventListPtr events,
DeviceIntPtr pDev,
int type,
@@ -442,7 +442,7 @@ extern int GetPointerEvents( int num_valuators,
int *valuators);
-extern int GetKeyboardEvents(
+extern _X_EXPORT int GetKeyboardEvents(
EventListPtr events,
DeviceIntPtr pDev,
int type,
@@ -493,7 +493,7 @@ extern int AttachDevice(ClientPtr client, extern _X_EXPORT DeviceIntPtr GetPairedDevice(DeviceIntPtr kbd);
extern DeviceIntPtr GetMaster(DeviceIntPtr dev, int type);
-extern int AllocDevicePair(ClientPtr client,
+extern _X_EXPORT int AllocDevicePair(ClientPtr client,
char* name,
DeviceIntPtr* ptr,
DeviceIntPtr* keybd,
@@ -505,7 +505,7 @@ extern void DeepCopyDeviceClasses(DeviceIntPtr from, DeviceChangedEvent *dce);
/* Helper functions. */
-extern int generate_modkeymap(ClientPtr client, DeviceIntPtr dev,
+extern _X_EXPORT int generate_modkeymap(ClientPtr client, DeviceIntPtr dev,
KeyCode **modkeymap, int *max_keys_per_mod);
extern int change_modmap(ClientPtr client, DeviceIntPtr dev, KeyCode *map,
int max_keys_per_mod);
diff --git a/xorg-server/mi/midispcur.c b/xorg-server/mi/midispcur.c index 3fb7e02b5..3a31b74d5 100644 --- a/xorg-server/mi/midispcur.c +++ b/xorg-server/mi/midispcur.c @@ -59,9 +59,9 @@ static DevPrivateKey miDCScreenKey = &miDCScreenKeyIndex; static Bool miDCCloseScreen(int index, ScreenPtr pScreen); -/* per device private data */ -static int miDCSpriteKeyIndex; -static DevPrivateKey miDCSpriteKey = &miDCSpriteKeyIndex; +/* per device per-screen private data */ +static int miDCSpriteKeyIndex[MAXSCREENS]; +static DevPrivateKey miDCSpriteKey = miDCSpriteKeyIndex; typedef struct { GCPtr pSourceGC, pMaskGC; @@ -75,10 +75,10 @@ typedef struct { #endif } miDCBufferRec, *miDCBufferPtr; -#define MIDCBUFFER(dev) \ +#define MIDCBUFFER(dev, screen) \ ((DevHasCursor(dev)) ? \ - (miDCBufferPtr)dixLookupPrivate(&dev->devPrivates, miDCSpriteKey) : \ - (miDCBufferPtr)dixLookupPrivate(&dev->u.master->devPrivates, miDCSpriteKey)) + (miDCBufferPtr)dixLookupPrivate(&dev->devPrivates, miDCSpriteKey + (screen)->myNum) : \ + (miDCBufferPtr)dixLookupPrivate(&dev->u.master->devPrivates, miDCSpriteKey + (screen)->myNum)) /* * The core pointer buffer will point to the index of the virtual core pointer @@ -158,10 +158,6 @@ miDCInitialize (ScreenPtr pScreen, miPointerScreenFuncPtr screenFuncs) return TRUE; } -#define tossGC(gc) (gc ? FreeGC (gc, (GContext) 0) : 0) -#define tossPix(pix) (pix ? (*pScreen->DestroyPixmap) (pix) : TRUE) -#define tossPict(pict) (pict ? FreePicture (pict, 0) : 0) - static Bool miDCCloseScreen (int index, ScreenPtr pScreen) { @@ -183,7 +179,6 @@ miDCRealizeCursor (ScreenPtr pScreen, CursorPtr pCursor) } #ifdef ARGB_CURSOR -#define EnsurePicture(picture,draw,win) (picture || miDCMakePicture(&picture,draw,win)) static VisualPtr miDCGetWindowVisual (WindowPtr pWin) @@ -415,12 +410,8 @@ miDCPutBits ( (*maskGC->ops->PushPixels) (maskGC, pPriv->maskBits, pDrawable, w, h, x, y); } -#define EnsureGC(gc,win) (gc || miDCMakeGC(&gc, win)) - static GCPtr -miDCMakeGC( - GCPtr *ppGC, - WindowPtr pWin) +miDCMakeGC(WindowPtr pWin) { GCPtr pGC; int status; @@ -431,7 +422,6 @@ miDCMakeGC( pGC = CreateGC((DrawablePtr)pWin, GCSubwindowMode|GCGraphicsExposures, gcvals, &status, (XID)0, serverClient); - *ppGC = pGC; return pGC; } @@ -456,22 +446,11 @@ miDCPutUpCursor (DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor, pScreenPriv = (miDCScreenPtr)dixLookupPrivate(&pScreen->devPrivates, miDCScreenKey); pWin = WindowTable[pScreen->myNum]; - pBuffer = MIDCBUFFER(pDev); + pBuffer = MIDCBUFFER(pDev, pScreen); #ifdef ARGB_CURSOR if (pPriv->pPicture) { - /* see comment in miDCPutUpCursor */ - if (pBuffer->pRootPicture && - pBuffer->pRootPicture->pDrawable && - pBuffer->pRootPicture->pDrawable->pScreen != pScreen) - { - tossPict(pBuffer->pRootPicture); - pBuffer->pRootPicture = NULL; - } - - if (!EnsurePicture(pBuffer->pRootPicture, &pWin->drawable, pWin)) - return FALSE; CompositePicture (PictOpOver, pPriv->pPicture, NULL, @@ -484,33 +463,6 @@ miDCPutUpCursor (DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor, else #endif { - /** - * XXX: Before MPX, the sourceGC and maskGC were attached to the - * screen, and would switch as the screen switches. With mpx we have - * the GC's attached to the device now, so each time we switch screen - * we need to make sure the GC's are allocated on the new screen. - * This is ... not optimal. (whot) - */ - if (pBuffer->pSourceGC && pScreen != pBuffer->pSourceGC->pScreen) - { - tossGC(pBuffer->pSourceGC); - pBuffer->pSourceGC = NULL; - } - - if (pBuffer->pMaskGC && pScreen != pBuffer->pMaskGC->pScreen) - { - tossGC(pBuffer->pMaskGC); - pBuffer->pMaskGC = NULL; - } - - if (!EnsureGC(pBuffer->pSourceGC, pWin)) - return FALSE; - if (!EnsureGC(pBuffer->pMaskGC, pWin)) - { - FreeGC (pBuffer->pSourceGC, (GContext) 0); - pBuffer->pSourceGC = 0; - return FALSE; - } miDCPutBits ((DrawablePtr)pWin, pPriv, pBuffer->pSourceGC, pBuffer->pMaskGC, x, y, pCursor->bits->width, pCursor->bits->height, @@ -531,7 +483,7 @@ miDCSaveUnderCursor (DeviceIntPtr pDev, ScreenPtr pScreen, pScreenPriv = (miDCScreenPtr)dixLookupPrivate(&pScreen->devPrivates, miDCScreenKey); - pBuffer = MIDCBUFFER(pDev); + pBuffer = MIDCBUFFER(pDev, pScreen); pSave = pBuffer->pSave; pWin = WindowTable[pScreen->myNum]; @@ -544,14 +496,7 @@ miDCSaveUnderCursor (DeviceIntPtr pDev, ScreenPtr pScreen, if (!pSave) return FALSE; } - /* see comment in miDCPutUpCursor */ - if (pBuffer->pSaveGC && pBuffer->pSaveGC->pScreen != pScreen) - { - tossGC(pBuffer->pSaveGC); - pBuffer->pSaveGC = NULL; - } - if (!EnsureGC(pBuffer->pSaveGC, pWin)) - return FALSE; + pGC = pBuffer->pSaveGC; if (pSave->drawable.serialNumber != pGC->serialNumber) ValidateGC ((DrawablePtr) pSave, pGC); @@ -572,20 +517,13 @@ miDCRestoreUnderCursor (DeviceIntPtr pDev, ScreenPtr pScreen, pScreenPriv = (miDCScreenPtr)dixLookupPrivate(&pScreen->devPrivates, miDCScreenKey); - pBuffer = MIDCBUFFER(pDev); + pBuffer = MIDCBUFFER(pDev, pScreen); pSave = pBuffer->pSave; pWin = WindowTable[pScreen->myNum]; if (!pSave) return FALSE; - /* see comment in miDCPutUpCursor */ - if (pBuffer->pRestoreGC && pBuffer->pRestoreGC->pScreen != pScreen) - { - tossGC(pBuffer->pRestoreGC); - pBuffer->pRestoreGC = NULL; - } - if (!EnsureGC(pBuffer->pRestoreGC, pWin)) - return FALSE; + pGC = pBuffer->pRestoreGC; if (pWin->drawable.serialNumber != pGC->serialNumber) ValidateGC ((DrawablePtr) pWin, pGC); @@ -607,7 +545,7 @@ miDCChangeSave (DeviceIntPtr pDev, ScreenPtr pScreen, pScreenPriv = (miDCScreenPtr)dixLookupPrivate(&pScreen->devPrivates, miDCScreenKey); - pBuffer = MIDCBUFFER(pDev); + pBuffer = MIDCBUFFER(pDev, pScreen); pSave = pBuffer->pSave; pWin = WindowTable[pScreen->myNum]; @@ -616,14 +554,7 @@ miDCChangeSave (DeviceIntPtr pDev, ScreenPtr pScreen, */ if (!pSave) return FALSE; - /* see comment in miDCPutUpCursor */ - if (pBuffer->pRestoreGC && pBuffer->pRestoreGC->pScreen != pScreen) - { - tossGC(pBuffer->pRestoreGC); - pBuffer->pRestoreGC = NULL; - } - if (!EnsureGC(pBuffer->pRestoreGC, pWin)) - return FALSE; + pGC = pBuffer->pRestoreGC; if (pWin->drawable.serialNumber != pGC->serialNumber) ValidateGC ((DrawablePtr) pWin, pGC); @@ -662,14 +593,7 @@ miDCChangeSave (DeviceIntPtr pDev, ScreenPtr pScreen, (*pGC->ops->CopyArea) ((DrawablePtr) pSave, (DrawablePtr) pWin, pGC, 0, sourcey, -dx, copyh, x + dx, desty); } - /* see comment in miDCPutUpCursor */ - if (pBuffer->pSaveGC && pBuffer->pSaveGC->pScreen != pScreen) - { - tossGC(pBuffer->pSaveGC); - pBuffer->pSaveGC = NULL; - } - if (!EnsureGC(pBuffer->pSaveGC, pWin)) - return FALSE; + pGC = pBuffer->pSaveGC; if (pSave->drawable.serialNumber != pGC->serialNumber) ValidateGC ((DrawablePtr) pSave, pGC); @@ -766,7 +690,7 @@ miDCMoveCursor (DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor, pScreenPriv = (miDCScreenPtr)dixLookupPrivate(&pScreen->devPrivates, miDCScreenKey); pWin = WindowTable[pScreen->myNum]; - pBuffer = MIDCBUFFER(pDev); + pBuffer = MIDCBUFFER(pDev, pScreen); pTemp = pBuffer->pTemp; if (!pTemp || @@ -809,17 +733,9 @@ miDCMoveCursor (DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor, #ifdef ARGB_CURSOR if (pPriv->pPicture) { - /* see comment in miDCPutUpCursor */ - if (pBuffer->pTempPicture && - pBuffer->pTempPicture->pDrawable && - pBuffer->pTempPicture->pDrawable->pScreen != pScreen) - { - tossPict(pBuffer->pTempPicture); - pBuffer->pTempPicture = NULL; - } + if (!pBuffer->pTempPicture) + miDCMakePicture(&pBuffer->pTempPicture, &pTemp->drawable, pWin); - if (!EnsurePicture(pBuffer->pTempPicture, &pTemp->drawable, pWin)) - return FALSE; CompositePicture (PictOpOver, pPriv->pPicture, NULL, @@ -832,38 +748,12 @@ miDCMoveCursor (DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor, else #endif { - if (!pBuffer->pPixSourceGC) - { - pBuffer->pPixSourceGC = CreateGC ((DrawablePtr)pTemp, - GCGraphicsExposures, &gcval, &status, (XID)0, serverClient); - if (!pBuffer->pPixSourceGC) - return FALSE; - } - if (!pBuffer->pPixMaskGC) - { - pBuffer->pPixMaskGC = CreateGC ((DrawablePtr)pTemp, - GCGraphicsExposures, &gcval, &status, (XID)0, serverClient); - if (!pBuffer->pPixMaskGC) - return FALSE; - } miDCPutBits ((DrawablePtr)pTemp, pPriv, pBuffer->pPixSourceGC, pBuffer->pPixMaskGC, dx, dy, pCursor->bits->width, pCursor->bits->height, source, mask); } - /* see comment in miDCPutUpCursor */ - if (pBuffer->pRestoreGC && pBuffer->pRestoreGC->pScreen != pScreen) - { - tossGC(pBuffer->pRestoreGC); - pBuffer->pRestoreGC = NULL; - } - /* - * copy the temporary pixmap onto the screen - */ - - if (!EnsureGC(pBuffer->pRestoreGC, pWin)) - return FALSE; pGC = pBuffer->pRestoreGC; if (pWin->drawable.serialNumber != pGC->serialNumber) ValidateGC ((DrawablePtr) pWin, pGC); @@ -877,51 +767,113 @@ miDCMoveCursor (DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor, static Bool miDCDeviceInitialize(DeviceIntPtr pDev, ScreenPtr pScreen) { - miDCBufferPtr pBuffer; - - pBuffer = xalloc(sizeof(miDCBufferRec)); - dixSetPrivate(&pDev->devPrivates, miDCSpriteKey, pBuffer); - - pBuffer->pSourceGC = - pBuffer->pMaskGC = - pBuffer->pSaveGC = - pBuffer->pRestoreGC = - pBuffer->pMoveGC = - pBuffer->pPixSourceGC = - pBuffer->pPixMaskGC = NULL; + miDCBufferPtr pBuffer; + WindowPtr pWin; + XID gcval = FALSE; + int status; + int i; + + if (!DevHasCursor(pDev)) + return TRUE; + + for (i = 0; i < screenInfo.numScreens; i++) + { + pScreen = screenInfo.screens[i]; + + pBuffer = xalloc(sizeof(miDCBufferRec)); + if (!pBuffer) + goto failure; + + dixSetPrivate(&pDev->devPrivates, miDCSpriteKey + pScreen->myNum, pBuffer); + pWin = WindowTable[pScreen->myNum]; + + pBuffer->pSourceGC = miDCMakeGC(pWin); + if (!pBuffer->pSourceGC) + goto failure; + + pBuffer->pMaskGC = miDCMakeGC(pWin); + if (!pBuffer->pMaskGC) + goto failure; + + pBuffer->pSaveGC = miDCMakeGC(pWin); + if (!pBuffer->pSaveGC) + goto failure; + + pBuffer->pRestoreGC = miDCMakeGC(pWin); + if (!pBuffer->pRestoreGC) + goto failure; + + pBuffer->pMoveGC = CreateGC ((DrawablePtr)pWin, + GCGraphicsExposures, &gcval, &status, (XID)0, serverClient); + if (!pBuffer->pMoveGC) + goto failure; + + pBuffer->pPixSourceGC = CreateGC ((DrawablePtr)pWin, + GCGraphicsExposures, &gcval, &status, (XID)0, serverClient); + if (!pBuffer->pPixSourceGC) + goto failure; + + pBuffer->pPixMaskGC = CreateGC ((DrawablePtr)pWin, + GCGraphicsExposures, &gcval, &status, (XID)0, serverClient); + if (!pBuffer->pPixMaskGC) + goto failure; + #ifdef ARGB_CURSOR - pBuffer->pRootPicture = NULL; - pBuffer->pTempPicture = NULL; + miDCMakePicture(&pBuffer->pRootPicture, &pWin->drawable, pWin); + if (!pBuffer->pRootPicture) + goto failure; + + pBuffer->pTempPicture = NULL; #endif - pBuffer->pSave = pBuffer->pTemp = NULL; + + // these get (re)allocated lazily depending on the cursor size + pBuffer->pSave = pBuffer->pTemp = NULL; + } return TRUE; + +failure: + + miDCDeviceCleanup(pDev, pScreen); + + return FALSE; } static void miDCDeviceCleanup(DeviceIntPtr pDev, ScreenPtr pScreen) { miDCBufferPtr pBuffer; + int i; if (DevHasCursor(pDev)) { - pBuffer = MIDCBUFFER(pDev); - tossGC (pBuffer->pSourceGC); - tossGC (pBuffer->pMaskGC); - tossGC (pBuffer->pSaveGC); - tossGC (pBuffer->pRestoreGC); - tossGC (pBuffer->pMoveGC); - tossGC (pBuffer->pPixSourceGC); - tossGC (pBuffer->pPixMaskGC); - tossPix (pBuffer->pSave); - tossPix (pBuffer->pTemp); + for (i = 0; i < screenInfo.numScreens; i++) + { + pScreen = screenInfo.screens[i]; + + pBuffer = MIDCBUFFER(pDev, pScreen); + + if (pBuffer) + { + if (pBuffer->pSourceGC) FreeGC(pBuffer->pSourceGC, (GContext) 0); + if (pBuffer->pMaskGC) FreeGC(pBuffer->pMaskGC, (GContext) 0); + if (pBuffer->pSaveGC) FreeGC(pBuffer->pSaveGC, (GContext) 0); + if (pBuffer->pRestoreGC) FreeGC(pBuffer->pRestoreGC, (GContext) 0); + if (pBuffer->pMoveGC) FreeGC(pBuffer->pMoveGC, (GContext) 0); + if (pBuffer->pPixSourceGC) FreeGC(pBuffer->pPixSourceGC, (GContext) 0); + if (pBuffer->pPixMaskGC) FreeGC(pBuffer->pPixMaskGC, (GContext) 0); + #ifdef ARGB_CURSOR -#if 0 /* This has been free()d before */ - tossPict (pScreenPriv->pRootPicture); -#endif - tossPict (pBuffer->pTempPicture); + if (pBuffer->pRootPicture) FreePicture(pBuffer->pRootPicture, 0); + if (pBuffer->pTempPicture) FreePicture(pBuffer->pTempPicture, 0); #endif - xfree(pBuffer); - dixSetPrivate(&pDev->devPrivates, miDCSpriteKey, NULL); + + if (pBuffer->pSave) (*pScreen->DestroyPixmap)(pBuffer->pSave); + if (pBuffer->pTemp) (*pScreen->DestroyPixmap)(pBuffer->pTemp); + + xfree(pBuffer); + dixSetPrivate(&pDev->devPrivates, miDCSpriteKey + pScreen->myNum, NULL); + } + } } } diff --git a/xorg-server/mi/misprite.c b/xorg-server/mi/misprite.c index 714c42944..43c090889 100644 --- a/xorg-server/mi/misprite.c +++ b/xorg-server/mi/misprite.c @@ -768,10 +768,8 @@ miSpriteRealizeCursor (DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor) pScreenPriv = dixLookupPrivate(&pScreen->devPrivates, miSpriteScreenKey); if (!IsMaster(pDev) && !pDev->u.master) - { - ErrorF("[mi] miSpriteRealizeCursor called for floating device.\n"); return FALSE; - } + pCursorInfo = MISPRITE(pDev); if (pCursor == pCursorInfo->pCursor) @@ -799,10 +797,8 @@ miSpriteSetCursor (DeviceIntPtr pDev, ScreenPtr pScreen, pScreenPriv = dixLookupPrivate(&pScreen->devPrivates, miSpriteScreenKey); if (!IsMaster(pDev) && !pDev->u.master) - { - ErrorF("[mi] miSpriteSetCursor called for floating device.\n"); return; - } + pPointer = MISPRITE(pDev); if (!pCursor) @@ -916,10 +912,8 @@ miSpriteMoveCursor (DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y) pScreenPriv = dixLookupPrivate(&pScreen->devPrivates, miSpriteScreenKey); if (!IsMaster(pDev) && !pDev->u.master) - { - ErrorF("[mi] miSpriteMoveCursor called for floating device.\n"); return; - } + pCursor = MISPRITE(pDev)->pCursor; miSpriteSetCursor (pDev, pScreen, pCursor, x, y); @@ -984,10 +978,8 @@ miSpriteRemoveCursor (DeviceIntPtr pDev, ScreenPtr pScreen) if (!IsMaster(pDev) && !pDev->u.master) - { - ErrorF("[mi] miSpriteRemoveCursor called for floating device.\n"); return; - } + DamageDrawInternal (pScreen, TRUE); pScreenPriv = dixLookupPrivate(&pScreen->devPrivates, miSpriteScreenKey); pCursorInfo = MISPRITE(pDev); @@ -1024,10 +1016,8 @@ miSpriteSaveUnderCursor(DeviceIntPtr pDev, ScreenPtr pScreen) miCursorInfoPtr pCursorInfo; if (!IsMaster(pDev) && !pDev->u.master) - { - ErrorF("[mi] miSpriteSaveUnderCursor called for floating device.\n"); return; - } + DamageDrawInternal (pScreen, TRUE); pScreenPriv = dixLookupPrivate(&pScreen->devPrivates, miSpriteScreenKey); pCursorInfo = MISPRITE(pDev); @@ -1067,10 +1057,7 @@ miSpriteRestoreCursor (DeviceIntPtr pDev, ScreenPtr pScreen) miCursorInfoPtr pCursorInfo; if (!IsMaster(pDev) && !pDev->u.master) - { - ErrorF("[mi] miSpriteRestoreCursor called for floating device.\n"); return; - } DamageDrawInternal (pScreen, TRUE); pScreenPriv = dixLookupPrivate(&pScreen->devPrivates, miSpriteScreenKey); @@ -1111,10 +1098,8 @@ miSpriteComputeSaved (DeviceIntPtr pDev, ScreenPtr pScreen) miCursorInfoPtr pCursorInfo; if (!IsMaster(pDev) && !pDev->u.master) - { - ErrorF("[mi] miSpriteComputeSaved called for floating device.\n"); return; - } + pScreenPriv = dixLookupPrivate(&pScreen->devPrivates, miSpriteScreenKey); pCursorInfo = MISPRITE(pDev); diff --git a/xorg-server/os/connection.c b/xorg-server/os/connection.c index 39f1dae87..73a37df49 100644 --- a/xorg-server/os/connection.c +++ b/xorg-server/os/connection.c @@ -1281,10 +1281,11 @@ MakeClientGrabPervious(ClientPtr client) void ListenOnOpenFD(int fd, int noxauth) { char port[256]; XtransConnInfo ciptr; + const char *display_env = getenv("DISPLAY"); - if(!strncmp(getenv("DISPLAY"), "/tmp/launch", 11)) { + if(display_env && (strncmp(display_env, "/tmp/launch", 11) == 0)) { /* Make the path the launchd socket if our DISPLAY is set right */ - strcpy(port, getenv("DISPLAY")); + strcpy(port, display_env); } else { /* Just some default so things don't break and die. */ sprintf(port, ":%d", atoi(display)); diff --git a/xorg-server/xorg-server.pc.in b/xorg-server/xorg-server.pc.in index 3d58dabbf..376cb933d 100644 --- a/xorg-server/xorg-server.pc.in +++ b/xorg-server/xorg-server.pc.in @@ -2,8 +2,10 @@ prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ +datarootdir=@datarootdir@ moduledir=@moduledir@ sdkdir=@sdkdir@ +sysconfigdir=@sysconfigdir@ abi_ansic=@abi_ansic@ abi_videodrv=@abi_videodrv@ |