mirror of
git://git.code.sf.net/p/cdesktopenv/code
synced 2025-02-15 04:32:24 +00:00
dtwm: Improve response for decoration hint from client.
Add a function: InitClientData.
This commit is contained in:
parent
e648aab6b1
commit
1c310b8635
2 changed files with 84 additions and 14 deletions
|
@ -89,7 +89,7 @@ WmWorkspaceData *pIconBoxInitialWS;
|
||||||
|
|
||||||
/*************************************<->*************************************
|
/*************************************<->*************************************
|
||||||
*
|
*
|
||||||
* GetClientInfo (pSD, clientWindow, manageFlags)
|
* InitClientData (clientWindow)
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* Description:
|
* Description:
|
||||||
|
@ -100,12 +100,8 @@ WmWorkspaceData *pIconBoxInitialWS;
|
||||||
*
|
*
|
||||||
* Inputs:
|
* Inputs:
|
||||||
* ------
|
* ------
|
||||||
* pSD = pointer to screen data for screen that client lives in
|
|
||||||
*
|
|
||||||
* clientWindow = window id for the client window that is to be managed
|
* clientWindow = window id for the client window that is to be managed
|
||||||
*
|
*
|
||||||
* manageFlags = flags that indicate wm state info
|
|
||||||
*
|
|
||||||
*
|
*
|
||||||
* Outputs:
|
* Outputs:
|
||||||
* -------
|
* -------
|
||||||
|
@ -115,12 +111,22 @@ WmWorkspaceData *pIconBoxInitialWS;
|
||||||
*************************************<->***********************************/
|
*************************************<->***********************************/
|
||||||
|
|
||||||
ClientData *
|
ClientData *
|
||||||
GetClientInfo (WmScreenData *pSD, Window clientWindow, long manageFlags)
|
InitClientData (Window clientWindow)
|
||||||
|
|
||||||
{
|
{
|
||||||
ClientData *pCD;
|
ClientData *pCD;
|
||||||
XSetWindowAttributes sAttributes;
|
|
||||||
|
|
||||||
|
if (!XFindContext (DISPLAY, clientWindow, wmGD.windowContextType,
|
||||||
|
(caddr_t *)&pCD))
|
||||||
|
{
|
||||||
|
XDeleteContext(DISPLAY, clientWindow, wmGD.tmpWindowContextType);
|
||||||
|
return (pCD);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!XFindContext (DISPLAY, clientWindow, wmGD.tmpWindowContextType,
|
||||||
|
(caddr_t *)&pCD))
|
||||||
|
{
|
||||||
|
return (pCD);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Allocate and initialize a client data structure:
|
* Allocate and initialize a client data structure:
|
||||||
|
@ -133,13 +139,15 @@ GetClientInfo (WmScreenData *pSD, Window clientWindow, long manageFlags)
|
||||||
return (NULL);
|
return (NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
XSaveContext (DISPLAY, clientWindow, wmGD.tmpWindowContextType,
|
||||||
|
(caddr_t)pCD);
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initialize the data structure:
|
* Initialize the data structure:
|
||||||
*/
|
*/
|
||||||
|
|
||||||
pCD->client = clientWindow;
|
pCD->client = clientWindow;
|
||||||
pCD->clientID = ++(pSD->clientCounter);
|
|
||||||
pCD->clientFlags = WM_INITIALIZATION;
|
pCD->clientFlags = WM_INITIALIZATION;
|
||||||
pCD->iconFlags = 0;
|
pCD->iconFlags = 0;
|
||||||
pCD->thisIconBox = NULL;
|
pCD->thisIconBox = NULL;
|
||||||
|
@ -200,7 +208,6 @@ GetClientInfo (WmScreenData *pSD, Window clientWindow, long manageFlags)
|
||||||
pCD->maxWidth = pCD->maxWidthLimit = BIGSIZE;
|
pCD->maxWidth = pCD->maxWidthLimit = BIGSIZE;
|
||||||
pCD->maxHeight = pCD->maxHeightLimit = BIGSIZE;
|
pCD->maxHeight = pCD->maxHeightLimit = BIGSIZE;
|
||||||
pCD->maxConfig = FALSE;
|
pCD->maxConfig = FALSE;
|
||||||
pCD->pSD = pSD;
|
|
||||||
pCD->dataType = CLIENT_DATA_TYPE;
|
pCD->dataType = CLIENT_DATA_TYPE;
|
||||||
pCD->window_status = 0L;
|
pCD->window_status = 0L;
|
||||||
|
|
||||||
|
@ -210,6 +217,59 @@ GetClientInfo (WmScreenData *pSD, Window clientWindow, long manageFlags)
|
||||||
|
|
||||||
pCD->smClientID = (String)NULL;
|
pCD->smClientID = (String)NULL;
|
||||||
|
|
||||||
|
pCD->decorUpdated = False;
|
||||||
|
pCD->isFullscreen = False;
|
||||||
|
pCD->monitorSizeIsSet = False;
|
||||||
|
|
||||||
|
return (pCD);
|
||||||
|
} /* END OF FUNCTION InitClientData */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*************************************<->*************************************
|
||||||
|
*
|
||||||
|
* GetClientInfo (pSD, clientWindow, manageFlags)
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Description:
|
||||||
|
* -----------
|
||||||
|
* This function is used to get client window data.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Inputs:
|
||||||
|
* ------
|
||||||
|
* pSD = pointer to screen data for screen that client lives in
|
||||||
|
*
|
||||||
|
* clientWindow = window id for the client window that is to be managed
|
||||||
|
*
|
||||||
|
* manageFlags = flags that indicate wm state info
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Outputs:
|
||||||
|
* -------
|
||||||
|
* Return = pointer to an initialized client data structure for the
|
||||||
|
* specified client window
|
||||||
|
*
|
||||||
|
*************************************<->***********************************/
|
||||||
|
|
||||||
|
ClientData *
|
||||||
|
GetClientInfo (WmScreenData *pSD, Window clientWindow, long manageFlags)
|
||||||
|
|
||||||
|
{
|
||||||
|
ClientData *pCD;
|
||||||
|
XSetWindowAttributes sAttributes;
|
||||||
|
|
||||||
|
if (!(pCD = InitClientData (clientWindow)))
|
||||||
|
{
|
||||||
|
return (NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
XDeleteContext(DISPLAY, clientWindow, wmGD.tmpWindowContextType);
|
||||||
|
|
||||||
|
pCD->clientID = ++(pSD->clientCounter);
|
||||||
|
pCD->pSD = pSD;
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Do special processing for client windows that are controlled by
|
* Do special processing for client windows that are controlled by
|
||||||
* the window manager.
|
* the window manager.
|
||||||
|
@ -3793,7 +3853,11 @@ ProcessMwmHints (ClientData *pCD)
|
||||||
{
|
{
|
||||||
if (pHints->flags & MWM_HINTS_FUNCTIONS)
|
if (pHints->flags & MWM_HINTS_FUNCTIONS)
|
||||||
{
|
{
|
||||||
if (pHints->functions & MWM_FUNC_ALL)
|
if (pHints->functions == WM_FUNC_DEFAULT)
|
||||||
|
{
|
||||||
|
pCD->clientFunctions = WM_FUNC_ALL;
|
||||||
|
}
|
||||||
|
else if (pHints->functions & WM_FUNC_DEFAULT)
|
||||||
{
|
{
|
||||||
/* client indicating inapplicable functions */
|
/* client indicating inapplicable functions */
|
||||||
pCD->clientFunctions &= ~(pHints->functions);
|
pCD->clientFunctions &= ~(pHints->functions);
|
||||||
|
@ -3822,7 +3886,11 @@ ProcessMwmHints (ClientData *pCD)
|
||||||
|
|
||||||
if (pHints->flags & MWM_HINTS_DECORATIONS)
|
if (pHints->flags & MWM_HINTS_DECORATIONS)
|
||||||
{
|
{
|
||||||
if (pHints->decorations & MWM_DECOR_ALL)
|
if (pHints->decorations == WM_DECOR_DEFAULT)
|
||||||
|
{
|
||||||
|
pCD->clientDecoration = WM_DECOR_ALL;
|
||||||
|
}
|
||||||
|
else if (pHints->decorations & WM_DECOR_DEFAULT)
|
||||||
{
|
{
|
||||||
/* client indicating decorations to be removed */
|
/* client indicating decorations to be removed */
|
||||||
pCD->clientDecoration &= ~(pHints->decorations);
|
pCD->clientDecoration &= ~(pHints->decorations);
|
||||||
|
@ -3931,5 +3999,6 @@ ProcessMwmHints (ClientData *pCD)
|
||||||
|
|
||||||
pCD->decor = pCD->clientDecoration; /* !!! combine decor ... !!! */
|
pCD->decor = pCD->clientDecoration; /* !!! combine decor ... !!! */
|
||||||
|
|
||||||
|
pCD->decorUpdated = True;
|
||||||
|
|
||||||
} /* END OF ProcessMwmHints */
|
} /* END OF ProcessMwmHints */
|
||||||
|
|
|
@ -39,6 +39,7 @@ extern void FixWindowConfiguration (ClientData *pCD, unsigned int *pWidth,
|
||||||
extern void FixWindowSize (ClientData *pCD, unsigned int *pWidth,
|
extern void FixWindowSize (ClientData *pCD, unsigned int *pWidth,
|
||||||
unsigned int *pHeight, unsigned int widthInc,
|
unsigned int *pHeight, unsigned int widthInc,
|
||||||
unsigned int heightInc);
|
unsigned int heightInc);
|
||||||
|
extern ClientData *InitClientData (Window clientWindow);
|
||||||
extern ClientData *GetClientInfo (WmScreenData *pSD, Window clientWindow,
|
extern ClientData *GetClientInfo (WmScreenData *pSD, Window clientWindow,
|
||||||
long manageFlags);
|
long manageFlags);
|
||||||
extern ClientData *GetWmClientInfo (WmWorkspaceData *pWS, ClientData *pCD,
|
extern ClientData *GetWmClientInfo (WmWorkspaceData *pWS, ClientData *pCD,
|
||||||
|
|
Loading…
Reference in a new issue