home *** CD-ROM | disk | FTP | other *** search
- /* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-
- *
- * The contents of this file are subject to the Netscape Public License
- * Version 1.0 (the "NPL"); you may not use this file except in
- * compliance with the NPL. You may obtain a copy of the NPL at
- * http://www.mozilla.org/NPL/
- *
- * Software distributed under the NPL is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
- * for the specific language governing rights and limitations under the
- * NPL.
- *
- * The Initial Developer of this code under the NPL is Netscape
- * Communications Corporation. Portions created by Netscape are
- * Copyright (C) 1998 Netscape Communications Corporation. All Rights
- * Reserved.
- */
-
- /* MozillaWm.c
- *
- * Mozilla Window Manager interface
- *
- * X11 window manager conventions do not support the window manager
- * functionality required by Mozilla JavaScript 1.2 features for NetCaster.
- */
-
- #include "MozillaWm.h"
-
- #define _MOZILLA_WM_VERSION "_MOZILLA_WM_VERSION"
- #define _MOZILLA_WM_HINTS "_MOZILLA_WM_HINTS"
-
- /* Window Manager-only API */
- #ifdef MOZILLA_WM_I_AM_A_WINDOW_MANAGER
- /* set version of Mozilla WM API supported by window manager. */
- void
- MozillaWmSetWmVersion(Screen *screen,long wmVersion)
- {
- Display *display=XDisplayOfScreen(screen);
- Window root=XRootWindowOfScreen(screen);
- Atom XA_MOZILLA_WM_VERSION=XInternAtom(display,_MOZILLA_WM_VERSION,False);
-
- XChangeProperty(display,
- root,
- XA_MOZILLA_WM_VERSION,
- XA_MOZILLA_WM_VERSION,
- 32,
- PropModeReplace,
- (unsigned char *) &wmVersion,
- 1);
- }
- #endif
-
- /* general client API */
-
- /* get version of Mozilla WM API supported by window manager for client's screen */
- long
- MozillaWmGetWmVersion(Screen *screen)
- {
- Display *display=XDisplayOfScreen(screen);
- Window root=XRootWindowOfScreen(screen);
- Atom XA_MOZILLA_WM_VERSION=XInternAtom(display,_MOZILLA_WM_VERSION,False);
- int retValue;
- unsigned long outlength;
- unsigned char *outpointer=NULL;
- Atom type;
- int format;
- unsigned long bytes_left;
-
- long wmVersion=MOZILLA_WM_VERSION_INVALID;/* default to invalid version */
-
- retValue=XGetWindowProperty(display,
- root,
- XA_MOZILLA_WM_VERSION,
- 0,
- 10000000,
- False,
- AnyPropertyType,
- &type,
- &format,
- &outlength,
- &bytes_left,
- &outpointer);
- if (retValue == 0 &&
- outpointer != NULL &&
- outlength > 0 &&
- format == 32) {
- /* extract version number from property data */
- wmVersion=((long*)outpointer)[0];
- }
- if (outpointer != NULL)
- XFree((char*)outpointer);
-
- return wmVersion;
- }
-
-
- /* set Mozilla WM hint flags on shell window */
- void MozillaWmSetHints(Screen *screen, Window window, unsigned long hints)
- {
- Display *display=XDisplayOfScreen(screen);
- Atom XA_MOZILLA_WM_HINTS=XInternAtom(display,_MOZILLA_WM_HINTS,False);
-
- XChangeProperty(display,
- window,
- XA_MOZILLA_WM_HINTS,
- XA_MOZILLA_WM_HINTS,
- 32,
- PropModeReplace,
- (unsigned char *) &hints,
- 1);
-
- }
-
- /* add Mozilla WM hint flags to shell window */
- void MozillaWmAddHints(Screen *screen, Window window, unsigned long hints)
- {
- unsigned long wmHints=MozillaWmGetHints(screen,window);
- wmHints |= hints;
- MozillaWmSetHints(screen,window,wmHints);
- }
-
- /* remove Mozilla WM hint flags from shell window */
- void MozillaWmRemoveHints(Screen *screen, Window window, unsigned long hints)
- {
- unsigned long wmHints=MozillaWmGetHints(screen,window);
- wmHints &= ~hints;
- MozillaWmSetHints(screen,window,wmHints);
- }
-
- /* get Mozilla WM hint flags from shell window */
- unsigned long MozillaWmGetHints(Screen *screen, Window window)
- {
- Display *display=XDisplayOfScreen(screen);
- Atom XA_MOZILLA_WM_HINTS=XInternAtom(display,_MOZILLA_WM_HINTS,False);
- int retValue;
- unsigned long outlength;
- unsigned char *outpointer=NULL;
- Atom type;
- int format;
- unsigned long bytes_left;
-
- unsigned long wmHints=MOZILLA_WM_NONE; /* default to no flags */
-
- retValue=XGetWindowProperty(display,
- window,
- XA_MOZILLA_WM_HINTS,
- 0,
- 10000000,
- False,
- AnyPropertyType,
- &type,
- &format,
- &outlength,
- &bytes_left,
- &outpointer);
- if (retValue == 0 &&
- outpointer != NULL &&
- outlength > 0 &&
- format == 32) {
- /* extract flags from property data */
- wmHints=((long*)outpointer)[0];
- }
- if (outpointer != NULL)
- XFree((char*)outpointer);
-
- return wmHints;
- }
-
-