1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun *Copyright (C) 1994-2000 The XFree86 Project, Inc. All Rights Reserved. 3*4882a593Smuzhiyun *Copyright (C) Colin Harrison 2005-2009 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun *Permission is hereby granted, free of charge, to any person obtaining 6*4882a593Smuzhiyun * a copy of this software and associated documentation files (the 7*4882a593Smuzhiyun *"Software"), to deal in the Software without restriction, including 8*4882a593Smuzhiyun *without limitation the rights to use, copy, modify, merge, publish, 9*4882a593Smuzhiyun *distribute, sublicense, and/or sell copies of the Software, and to 10*4882a593Smuzhiyun *permit persons to whom the Software is furnished to do so, subject to 11*4882a593Smuzhiyun *the following conditions: 12*4882a593Smuzhiyun * 13*4882a593Smuzhiyun *The above copyright notice and this permission notice shall be 14*4882a593Smuzhiyun *included in all copies or substantial portions of the Software. 15*4882a593Smuzhiyun * 16*4882a593Smuzhiyun *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17*4882a593Smuzhiyun *EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18*4882a593Smuzhiyun *MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19*4882a593Smuzhiyun *NONINFRINGEMENT. IN NO EVENT SHALL THE XFREE86 PROJECT BE LIABLE FOR 20*4882a593Smuzhiyun *ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF 21*4882a593Smuzhiyun *CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 22*4882a593Smuzhiyun *WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23*4882a593Smuzhiyun * 24*4882a593Smuzhiyun *Except as contained in this notice, the name of the XFree86 Project 25*4882a593Smuzhiyun *shall not be used in advertising or otherwise to promote the sale, use 26*4882a593Smuzhiyun *or other dealings in this Software without prior written authorization 27*4882a593Smuzhiyun *from the XFree86 Project. 28*4882a593Smuzhiyun * 29*4882a593Smuzhiyun * Authors: Kensuke Matsuzaki 30*4882a593Smuzhiyun * Colin Harrison 31*4882a593Smuzhiyun */ 32*4882a593Smuzhiyun #if !defined(_WINWINDOW_H_) 33*4882a593Smuzhiyun #define _WINWINDOW_H_ 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun #ifndef NO 36*4882a593Smuzhiyun #define NO 0 37*4882a593Smuzhiyun #endif 38*4882a593Smuzhiyun #ifndef YES 39*4882a593Smuzhiyun #define YES 1 40*4882a593Smuzhiyun #endif 41*4882a593Smuzhiyun 42*4882a593Smuzhiyun /* Constant strings */ 43*4882a593Smuzhiyun #ifndef PROJECT_NAME 44*4882a593Smuzhiyun #define PROJECT_NAME "Cygwin/X" 45*4882a593Smuzhiyun #endif 46*4882a593Smuzhiyun #define EXECUTABLE_NAME "XWin" 47*4882a593Smuzhiyun #define WINDOW_CLASS "cygwin/x" 48*4882a593Smuzhiyun #define WINDOW_TITLE PROJECT_NAME ":%s.%d" 49*4882a593Smuzhiyun #define WINDOW_TITLE_XDMCP "%s:%s.%d" 50*4882a593Smuzhiyun #define WIN_SCR_PROP "cyg_screen_prop rl" 51*4882a593Smuzhiyun #define WINDOW_CLASS_X "cygwin/x X rl" 52*4882a593Smuzhiyun #define WINDOW_CLASS_X_MSG "cygwin/x X msg" 53*4882a593Smuzhiyun #define WINDOW_TITLE_X PROJECT_NAME " X" 54*4882a593Smuzhiyun #define WIN_WINDOW_PROP "cyg_window_prop_rl" 55*4882a593Smuzhiyun #ifdef HAS_DEVWINDOWS 56*4882a593Smuzhiyun #define WIN_MSG_QUEUE_FNAME "/dev/windows" 57*4882a593Smuzhiyun #endif 58*4882a593Smuzhiyun #define WIN_WID_PROP "cyg_wid_prop_rl" 59*4882a593Smuzhiyun #define WIN_NEEDMANAGE_PROP "cyg_override_redirect_prop_rl" 60*4882a593Smuzhiyun #ifndef CYGMULTIWINDOW_DEBUG 61*4882a593Smuzhiyun #define CYGMULTIWINDOW_DEBUG NO 62*4882a593Smuzhiyun #endif 63*4882a593Smuzhiyun #ifndef CYGWINDOWING_DEBUG 64*4882a593Smuzhiyun #define CYGWINDOWING_DEBUG NO 65*4882a593Smuzhiyun #endif 66*4882a593Smuzhiyun 67*4882a593Smuzhiyun #define XMING_SIGNATURE 0x12345678L 68*4882a593Smuzhiyun 69*4882a593Smuzhiyun typedef struct _winPrivScreenRec *winPrivScreenPtr; 70*4882a593Smuzhiyun 71*4882a593Smuzhiyun /* 72*4882a593Smuzhiyun * Window privates 73*4882a593Smuzhiyun */ 74*4882a593Smuzhiyun 75*4882a593Smuzhiyun typedef struct { 76*4882a593Smuzhiyun DWORD dwDummy; 77*4882a593Smuzhiyun HRGN hRgn; 78*4882a593Smuzhiyun HWND hWnd; 79*4882a593Smuzhiyun winPrivScreenPtr pScreenPriv; 80*4882a593Smuzhiyun Bool fXKilled; 81*4882a593Smuzhiyun HDWP hDwp; 82*4882a593Smuzhiyun #ifdef XWIN_GLX_WINDOWS 83*4882a593Smuzhiyun Bool fWglUsed; 84*4882a593Smuzhiyun #endif 85*4882a593Smuzhiyun } winPrivWinRec, *winPrivWinPtr; 86*4882a593Smuzhiyun 87*4882a593Smuzhiyun typedef struct _winWMMessageRec { 88*4882a593Smuzhiyun DWORD dwID; 89*4882a593Smuzhiyun DWORD msg; 90*4882a593Smuzhiyun int iWindow; 91*4882a593Smuzhiyun HWND hwndWindow; 92*4882a593Smuzhiyun int iX, iY; 93*4882a593Smuzhiyun int iWidth, iHeight; 94*4882a593Smuzhiyun } winWMMessageRec, *winWMMessagePtr; 95*4882a593Smuzhiyun 96*4882a593Smuzhiyun /* 97*4882a593Smuzhiyun * winmultiwindowwm.c 98*4882a593Smuzhiyun */ 99*4882a593Smuzhiyun 100*4882a593Smuzhiyun #define WM_WM_MOVE (WM_USER + 1) 101*4882a593Smuzhiyun #define WM_WM_SIZE (WM_USER + 2) 102*4882a593Smuzhiyun #define WM_WM_RAISE (WM_USER + 3) 103*4882a593Smuzhiyun #define WM_WM_LOWER (WM_USER + 4) 104*4882a593Smuzhiyun #define WM_WM_UNMAP (WM_USER + 6) 105*4882a593Smuzhiyun #define WM_WM_KILL (WM_USER + 7) 106*4882a593Smuzhiyun #define WM_WM_ACTIVATE (WM_USER + 8) 107*4882a593Smuzhiyun #define WM_WM_NAME_EVENT (WM_USER + 9) 108*4882a593Smuzhiyun #define WM_WM_ICON_EVENT (WM_USER + 10) 109*4882a593Smuzhiyun #define WM_WM_CHANGE_STATE (WM_USER + 11) 110*4882a593Smuzhiyun #define WM_WM_MAP2 (WM_USER + 12) 111*4882a593Smuzhiyun #define WM_WM_MAP3 (WM_USER + 13) 112*4882a593Smuzhiyun #define WM_WM_HINTS_EVENT (WM_USER + 14) 113*4882a593Smuzhiyun 114*4882a593Smuzhiyun #define MwmHintsDecorations (1L << 1) 115*4882a593Smuzhiyun 116*4882a593Smuzhiyun #define MwmDecorAll (1L << 0) 117*4882a593Smuzhiyun #define MwmDecorBorder (1L << 1) 118*4882a593Smuzhiyun #define MwmDecorHandle (1L << 2) 119*4882a593Smuzhiyun #define MwmDecorTitle (1L << 3) 120*4882a593Smuzhiyun #define MwmDecorMenu (1L << 4) 121*4882a593Smuzhiyun #define MwmDecorMinimize (1L << 5) 122*4882a593Smuzhiyun #define MwmDecorMaximize (1L << 6) 123*4882a593Smuzhiyun 124*4882a593Smuzhiyun /* 125*4882a593Smuzhiyun This structure only contains 3 elements. The Motif 2.0 structure contains 5, 126*4882a593Smuzhiyun but we only need the first 3, so that is all we will define 127*4882a593Smuzhiyun 128*4882a593Smuzhiyun This structure represents xcb_get_property()'s view of the property as a 129*4882a593Smuzhiyun sequence of ints, rather than XGetWindowProperty()'s view of the property as a 130*4882a593Smuzhiyun sequence of arch-dependent longs. 131*4882a593Smuzhiyun */ 132*4882a593Smuzhiyun typedef struct MwmHints { 133*4882a593Smuzhiyun unsigned int flags, functions, decorations; 134*4882a593Smuzhiyun } MwmHints; 135*4882a593Smuzhiyun 136*4882a593Smuzhiyun #define PropMwmHintsElements 3 137*4882a593Smuzhiyun 138*4882a593Smuzhiyun void 139*4882a593Smuzhiyun winSendMessageToWM(void *pWMInfo, winWMMessagePtr msg); 140*4882a593Smuzhiyun 141*4882a593Smuzhiyun Bool 142*4882a593Smuzhiyun 143*4882a593Smuzhiyun winInitWM(void **ppWMInfo, 144*4882a593Smuzhiyun pthread_t * ptWMProc, 145*4882a593Smuzhiyun pthread_t * ptXMsgProc, 146*4882a593Smuzhiyun pthread_mutex_t * ppmServerStarted, 147*4882a593Smuzhiyun int dwScreen, HWND hwndScreen); 148*4882a593Smuzhiyun 149*4882a593Smuzhiyun void 150*4882a593Smuzhiyun winDeinitMultiWindowWM(void); 151*4882a593Smuzhiyun 152*4882a593Smuzhiyun void 153*4882a593Smuzhiyun winPropertyStoreInit(void); 154*4882a593Smuzhiyun 155*4882a593Smuzhiyun void 156*4882a593Smuzhiyun winPropertyStoreDestroy(void); 157*4882a593Smuzhiyun 158*4882a593Smuzhiyun void 159*4882a593Smuzhiyun winSetAppUserModelID(HWND hWnd, const char *AppID); 160*4882a593Smuzhiyun 161*4882a593Smuzhiyun void 162*4882a593Smuzhiyun winShowWindowOnTaskbar(HWND hWnd, Bool show); 163*4882a593Smuzhiyun 164*4882a593Smuzhiyun #endif 165