185 lines
4.4 KiB
C
Executable File
185 lines
4.4 KiB
C
Executable File
/*
|
|
*Copyright (C) 1994-2000 The XFree86 Project, Inc. All Rights Reserved.
|
|
*
|
|
*Permission is hereby granted, free of charge, to any person obtaining
|
|
* a copy of this software and associated documentation files (the
|
|
*"Software"), to deal in the Software without restriction, including
|
|
*without limitation the rights to use, copy, modify, merge, publish,
|
|
*distribute, sublicense, 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 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
|
|
*NONINFRINGEMENT. IN NO EVENT SHALL THE XFREE86 PROJECT 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.
|
|
*
|
|
*Except as contained in this notice, the name of the XFree86 Project
|
|
*shall not be used in advertising or otherwise to promote the sale, use
|
|
*or other dealings in this Software without prior written authorization
|
|
*from the XFree86 Project.
|
|
*
|
|
* Authors: Kensuke Matsuzaki
|
|
* Earle F. Philhower, III
|
|
* Harold L Hunt II
|
|
*/
|
|
|
|
#include "win.h"
|
|
#include "winprefs.h"
|
|
|
|
#if 0
|
|
/*
|
|
* winMWExtWMReorderWindows
|
|
*/
|
|
|
|
void
|
|
winMWExtWMReorderWindows (ScreenPtr pScreen)
|
|
{
|
|
winScreenPriv(pScreen);
|
|
HWND hwnd = NULL;
|
|
win32RootlessWindowPtr pRLWin = NULL;
|
|
win32RootlessWindowPtr pRLWinSib = NULL;
|
|
DWORD dwCurrentProcessID = GetCurrentProcessId ();
|
|
DWORD dwWindowProcessID = 0;
|
|
XID vlist[2];
|
|
|
|
#if CYGMULTIWINDOW_DEBUG && FALSE
|
|
ErrorF ("winMWExtWMReorderWindows\n");
|
|
#endif
|
|
|
|
pScreenPriv->fRestacking = TRUE;
|
|
|
|
if (pScreenPriv->fWindowOrderChanged)
|
|
{
|
|
#if CYGMULTIWINDOW_DEBUG
|
|
ErrorF ("winMWExtWMReorderWindows - Need to restack\n");
|
|
#endif
|
|
hwnd = GetTopWindow (NULL);
|
|
|
|
while (hwnd)
|
|
{
|
|
GetWindowThreadProcessId (hwnd, &dwWindowProcessID);
|
|
|
|
if ((dwWindowProcessID == dwCurrentProcessID)
|
|
&& GetProp (hwnd, WIN_WINDOW_PROP))
|
|
{
|
|
pRLWinSib = pRLWin;
|
|
pRLWin = (win32RootlessWindowPtr)GetProp (hwnd, WIN_WINDOW_PROP);
|
|
|
|
if (pRLWinSib)
|
|
{
|
|
vlist[0] = pRLWinSib->pFrame->win->drawable.id;
|
|
vlist[1] = Below;
|
|
|
|
ConfigureWindow (pRLWin->pFrame->win, CWSibling | CWStackMode,
|
|
vlist, wClient(pRLWin->pFrame->win));
|
|
}
|
|
else
|
|
{
|
|
/* 1st window - raise to the top */
|
|
vlist[0] = Above;
|
|
|
|
ConfigureWindow (pRLWin->pFrame->win, CWStackMode,
|
|
vlist, wClient(pRLWin->pFrame->win));
|
|
}
|
|
}
|
|
hwnd = GetNextWindow (hwnd, GW_HWNDNEXT);
|
|
}
|
|
}
|
|
|
|
pScreenPriv->fRestacking = FALSE;
|
|
pScreenPriv->fWindowOrderChanged = FALSE;
|
|
}
|
|
#endif
|
|
|
|
|
|
/*
|
|
* winMWExtWMMoveXWindow
|
|
*/
|
|
|
|
void
|
|
winMWExtWMMoveXWindow (WindowPtr pWin, int x, int y)
|
|
{
|
|
XID *vlist = malloc(sizeof(long)*2);
|
|
|
|
(CARD32*)vlist[0] = x;
|
|
(CARD32*)vlist[1] = y;
|
|
ConfigureWindow (pWin, CWX | CWY, vlist, wClient(pWin));
|
|
free(vlist);
|
|
}
|
|
|
|
|
|
/*
|
|
* winMWExtWMResizeXWindow
|
|
*/
|
|
|
|
void
|
|
winMWExtWMResizeXWindow (WindowPtr pWin, int w, int h)
|
|
{
|
|
XID *vlist = malloc(sizeof(long)*2);
|
|
|
|
(CARD32*)vlist[0] = w;
|
|
(CARD32*)vlist[1] = h;
|
|
ConfigureWindow (pWin, CWWidth | CWHeight, vlist, wClient(pWin));
|
|
free(vlist);
|
|
}
|
|
|
|
|
|
/*
|
|
* winMWExtWMMoveResizeXWindow
|
|
*/
|
|
|
|
void
|
|
winMWExtWMMoveResizeXWindow (WindowPtr pWin, int x, int y, int w, int h)
|
|
{
|
|
XID *vlist = malloc(sizeof(long)*4);
|
|
|
|
(CARD32*)vlist[0] = x;
|
|
(CARD32*)vlist[1] = y;
|
|
(CARD32*)vlist[2] = w;
|
|
(CARD32*)vlist[3] = h;
|
|
|
|
ConfigureWindow (pWin, CWX | CWY | CWWidth | CWHeight, vlist, wClient(pWin));
|
|
free(vlist);
|
|
}
|
|
|
|
|
|
/*
|
|
* winMWExtWMUpdateIcon
|
|
* Change the Windows window icon
|
|
*/
|
|
|
|
void
|
|
winMWExtWMUpdateIcon (Window id)
|
|
{
|
|
WindowPtr pWin;
|
|
HICON hIcon, hiconOld;
|
|
|
|
pWin = LookupIDByType (id, RT_WINDOW);
|
|
hIcon = (HICON)winOverrideIcon ((unsigned long)pWin);
|
|
|
|
if (!hIcon)
|
|
hIcon = winXIconToHICON (pWin, GetSystemMetrics(SM_CXICON));
|
|
|
|
if (hIcon)
|
|
{
|
|
win32RootlessWindowPtr pRLWinPriv
|
|
= (win32RootlessWindowPtr) RootlessFrameForWindow (pWin, FALSE);
|
|
|
|
if (pRLWinPriv->hWnd)
|
|
{
|
|
hiconOld = (HICON) SetClassLong (pRLWinPriv->hWnd,
|
|
GCL_HICON,
|
|
(int) hIcon);
|
|
|
|
winDestroyIcon(hiconOld);
|
|
}
|
|
}
|
|
}
|