|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Motif
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Copyright (c) 1987-2012, The Open Group. All rights reserved.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* These libraries and programs are free software; you can
|
|
Packit |
b099d7 |
* redistribute them and/or modify them under the terms of the GNU
|
|
Packit |
b099d7 |
* Lesser General Public License as published by the Free Software
|
|
Packit |
b099d7 |
* Foundation; either version 2 of the License, or (at your option)
|
|
Packit |
b099d7 |
* any later version.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* These libraries and programs are distributed in the hope that
|
|
Packit |
b099d7 |
* they will be useful, but WITHOUT ANY WARRANTY; without even the
|
|
Packit |
b099d7 |
* implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
Packit |
b099d7 |
* PURPOSE. See the GNU Lesser General Public License for more
|
|
Packit |
b099d7 |
* details.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* You should have received a copy of the GNU Lesser General Public
|
|
Packit |
b099d7 |
* License along with these librararies and programs; if not, write
|
|
Packit |
b099d7 |
* to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
|
|
Packit |
b099d7 |
* Floor, Boston, MA 02110-1301 USA
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Motif Release 1.2.3
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
#ifdef HAVE_CONFIG_H
|
|
Packit |
b099d7 |
#include <config.h>
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#ifdef REV_INFO
|
|
Packit |
b099d7 |
#ifndef lint
|
|
Packit |
b099d7 |
static char rcsid[] = "$XConsortium: WmCDInfo.c /main/4 1995/11/01 11:32:15 rswiston $"
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* (c) Copyright 1987, 1988, 1989, 1990 HEWLETT-PACKARD COMPANY */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Included Files:
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#include "WmGlobal.h"
|
|
Packit |
b099d7 |
#include "WmCDInfo.h"
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*************************************<->*************************************
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* unsigned int TitleTextHeight (pcd)
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Description:
|
|
Packit |
b099d7 |
* -----------
|
|
Packit |
b099d7 |
* Returns the height of the title text plus padding
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Inputs:
|
|
Packit |
b099d7 |
* ------
|
|
Packit |
b099d7 |
* pcd - pointer to client data record
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Outputs:
|
|
Packit |
b099d7 |
* -------
|
|
Packit |
b099d7 |
* TitleTextHeight - Height of title text plus padding
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Comments:
|
|
Packit |
b099d7 |
* --------
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*************************************<->***********************************/
|
|
Packit |
b099d7 |
unsigned int TitleTextHeight (ClientData *pcd)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
unsigned int ttextheight;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#ifndef NO_MULTIBYTE
|
|
Packit |
b099d7 |
if (DECOUPLE_TITLE_APPEARANCE(pcd))
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
ttextheight = CLIENT_TITLE_APPEARANCE(pcd).titleHeight;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
ttextheight = CLIENT_APPEARANCE(pcd).titleHeight;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
#else
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XFontStruct *font;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (DECOUPLE_TITLE_APPEARANCE(pcd))
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
font = CLIENT_TITLE_APPEARANCE(pcd).font;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
font = CLIENT_APPEARANCE(pcd).font;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (font)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
ttextheight = TEXT_HEIGHT(font) + WM_TITLE_BAR_PADDING;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Failed to load any font! (probably due to error in
|
|
Packit |
b099d7 |
* font path, toolkit, or resource converter. Set to
|
|
Packit |
b099d7 |
* arbitrary value for robustness.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
ttextheight = 16;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
return (ttextheight);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*************************************<->*************************************
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* unsigned int InitTitleBarHeight (pcd)
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Description:
|
|
Packit |
b099d7 |
* -----------
|
|
Packit |
b099d7 |
* Used to initialize pCD->frameInfo.titleBarHeight which is used by the new
|
|
Packit |
b099d7 |
* macro TitleBarHeight(). Returns the height of the title bar.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Inputs:
|
|
Packit |
b099d7 |
* ------
|
|
Packit |
b099d7 |
* pcd - pointer to client data record
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Outputs:
|
|
Packit |
b099d7 |
* -------
|
|
Packit |
b099d7 |
* InitTitleBarHeight - height of title bar, 0 if no title bar.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Comments:
|
|
Packit |
b099d7 |
* --------
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*************************************<->***********************************/
|
|
Packit |
b099d7 |
unsigned int InitTitleBarHeight (ClientData *pcd)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
unsigned int tbarheight;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (pcd->decor & MWM_DECOR_TITLE)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
tbarheight = TitleTextHeight(pcd);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
tbarheight = 0;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return (tbarheight);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*************************************<->*************************************
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* unsigned int UpperBorderWidth (pcd)
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Description:
|
|
Packit |
b099d7 |
* -----------
|
|
Packit |
b099d7 |
* Returns the width of the upper frame border
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Inputs:
|
|
Packit |
b099d7 |
* ------
|
|
Packit |
b099d7 |
* pcd - pointer to client data record
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Outputs:
|
|
Packit |
b099d7 |
* -------
|
|
Packit |
b099d7 |
* UpperBorderWidth - width of the upper frame border
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Comments:
|
|
Packit |
b099d7 |
* --------
|
|
Packit |
b099d7 |
* The upper border width is thinner if there is a title bar. The
|
|
Packit |
b099d7 |
* title bar appears to sit across some of the inside beveling to
|
|
Packit |
b099d7 |
* make the frame look more integrated.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*************************************<->***********************************/
|
|
Packit |
b099d7 |
unsigned int UpperBorderWidth (ClientData *pcd)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
unsigned int uswidth;
|
|
Packit |
b099d7 |
unsigned int decoration = pcd->decor;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (decoration & MWM_DECOR_RESIZEH)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
uswidth = RESIZE_BORDER_WIDTH(pcd);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else if (decoration & MWM_DECOR_BORDER)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
uswidth = FRAME_BORDER_WIDTH(pcd);
|
|
Packit |
b099d7 |
#ifdef PANELIST
|
|
Packit |
b099d7 |
if((pcd->clientFlags & FRONT_PANEL_BOX) &&
|
|
Packit |
b099d7 |
(uswidth > 0))
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
uswidth -= 1;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
#endif /* PANELIST */
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else if ((decoration & MWM_DECOR_TITLE) ||
|
|
Packit |
b099d7 |
(pcd->matteWidth > 0))
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
uswidth = 0;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
uswidth = pcd->xBorderWidth;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return (uswidth);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*************************************<->*************************************
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* unsigned int LowerBorderWidth (pcd)
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Description:
|
|
Packit |
b099d7 |
* -----------
|
|
Packit |
b099d7 |
* Returns the width of the lower frame border
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Inputs:
|
|
Packit |
b099d7 |
* ------
|
|
Packit |
b099d7 |
* pcd - pointer to client data record
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Outputs:
|
|
Packit |
b099d7 |
* -------
|
|
Packit |
b099d7 |
* LowerBorderWidth - width of the lower frame border
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Comments:
|
|
Packit |
b099d7 |
* --------
|
|
Packit |
b099d7 |
* The upper border width is thinner than the lower border if there
|
|
Packit |
b099d7 |
* is a title bar. The title bar appears to sit across some of the
|
|
Packit |
b099d7 |
* inside beveling to make the frame look more integrated.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*************************************<->***********************************/
|
|
Packit |
b099d7 |
unsigned int LowerBorderWidth (ClientData *pcd)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
unsigned int lswidth;
|
|
Packit |
b099d7 |
unsigned int decoration = pcd->decor;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (decoration & (MWM_DECOR_RESIZEH | MWM_DECOR_BORDER))
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if ((pcd->matteWidth == 0) && (decoration & MWM_DECOR_TITLE) &&
|
|
Packit |
b099d7 |
(wmGD.frameStyle == WmRECESSED))
|
|
Packit |
b099d7 |
lswidth = UpperBorderWidth (pcd) +
|
|
Packit |
b099d7 |
(pcd->internalBevel - JOIN_BEVEL(pcd));
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
lswidth = UpperBorderWidth (pcd);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else if (pcd->matteWidth > 0)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
lswidth = 0;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
lswidth = pcd->xBorderWidth;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return (lswidth);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*************************************<->*************************************
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* unsigned int FrameWidth (pcd)
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Description:
|
|
Packit |
b099d7 |
* -----------
|
|
Packit |
b099d7 |
* Returns the width of the frame
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Inputs:
|
|
Packit |
b099d7 |
* ------
|
|
Packit |
b099d7 |
* pcd - pointer to client data record
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Outputs:
|
|
Packit |
b099d7 |
* -------
|
|
Packit |
b099d7 |
* FrameWidth - width of frame
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Comments:
|
|
Packit |
b099d7 |
* --------
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*************************************<->***********************************/
|
|
Packit |
b099d7 |
unsigned int FrameWidth (ClientData *pcd)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
unsigned int frameWidth;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
frameWidth = ((pcd->maxConfig) ? pcd->maxWidth : pcd->clientWidth) +
|
|
Packit |
b099d7 |
2*pcd->matteWidth + 2*LowerBorderWidth (pcd);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return (frameWidth);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*************************************<->*************************************
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* unsigned int CornerWidth (pcd)
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Description:
|
|
Packit |
b099d7 |
* -----------
|
|
Packit |
b099d7 |
* Returns the width of the corner frame resize handle
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Inputs:
|
|
Packit |
b099d7 |
* ------
|
|
Packit |
b099d7 |
* pcd - pointer to client data record
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Outputs:
|
|
Packit |
b099d7 |
* -------
|
|
Packit |
b099d7 |
* CornerWidth - width of the corner resize handle
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Comments:
|
|
Packit |
b099d7 |
* --------
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*************************************<->***********************************/
|
|
Packit |
b099d7 |
unsigned int CornerWidth (ClientData *pcd)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
unsigned int cwidth;
|
|
Packit |
b099d7 |
unsigned int frameWidth = FrameWidth (pcd);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* adjust for resize border (default border if no resize wanted) */
|
|
Packit |
b099d7 |
if (pcd->decor & MWM_DECOR_RESIZEH)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
/* corner size is driven by title bar height */
|
|
Packit |
b099d7 |
cwidth = TitleTextHeight(pcd) + UpperBorderWidth (pcd);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* scale down corners to make resize pieces proportional */
|
|
Packit |
b099d7 |
if (3*cwidth > frameWidth) cwidth = frameWidth / 3;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else {
|
|
Packit |
b099d7 |
/* no resizing functions */
|
|
Packit |
b099d7 |
cwidth = 0;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return (cwidth);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*************************************<->*************************************
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* unsigned int FrameHeight (pcd)
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Description:
|
|
Packit |
b099d7 |
* -----------
|
|
Packit |
b099d7 |
* Returns the height of the frame
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Inputs:
|
|
Packit |
b099d7 |
* ------
|
|
Packit |
b099d7 |
* pcd - pointer to client data record
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Outputs:
|
|
Packit |
b099d7 |
* -------
|
|
Packit |
b099d7 |
* FrameHeight - position of frame
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Comments:
|
|
Packit |
b099d7 |
* --------
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*************************************<->***********************************/
|
|
Packit |
b099d7 |
unsigned int FrameHeight (ClientData *pcd)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
unsigned int frameHeight;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (pcd->decor & (MWM_DECOR_RESIZEH | MWM_DECOR_BORDER))
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
frameHeight = ((pcd->maxConfig) ?
|
|
Packit |
b099d7 |
pcd->maxHeight : pcd->clientHeight) +
|
|
Packit |
b099d7 |
2*pcd->matteWidth + LowerBorderWidth (pcd) +
|
|
Packit |
b099d7 |
UpperBorderWidth (pcd) + TitleBarHeight(pcd);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
frameHeight = ((pcd->maxConfig) ?
|
|
Packit |
b099d7 |
pcd->maxHeight : pcd->clientHeight) +
|
|
Packit |
b099d7 |
2*pcd->matteWidth + 2*LowerBorderWidth (pcd) +
|
|
Packit |
b099d7 |
TitleBarHeight(pcd);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return (frameHeight);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*************************************<->*************************************
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* unsigned int CornerHeight (pcd)
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Description:
|
|
Packit |
b099d7 |
* -----------
|
|
Packit |
b099d7 |
* Returns the height of the corner frame resize handle
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Inputs:
|
|
Packit |
b099d7 |
* ------
|
|
Packit |
b099d7 |
* pcd - pointer to client data record
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Outputs:
|
|
Packit |
b099d7 |
* -------
|
|
Packit |
b099d7 |
* CornerHeight - Height of the corner resize handle
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Comments:
|
|
Packit |
b099d7 |
* --------
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*************************************<->***********************************/
|
|
Packit |
b099d7 |
unsigned int CornerHeight (ClientData *pcd)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
unsigned int cheight;
|
|
Packit |
b099d7 |
unsigned int frameHeight = FrameHeight (pcd);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* adjust for resize border (default border if no resize wanted) */
|
|
Packit |
b099d7 |
if (pcd->decor & MWM_DECOR_RESIZEH)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
/* corner size is driven by title bar height */
|
|
Packit |
b099d7 |
cheight = TitleTextHeight(pcd) + UpperBorderWidth (pcd);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* scale down corners to make resize pieces proportional */
|
|
Packit |
b099d7 |
if (3*cheight > frameHeight) cheight = frameHeight / 3;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else {
|
|
Packit |
b099d7 |
/* produce default border with no resizing functions */
|
|
Packit |
b099d7 |
cheight = 0;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return (cheight);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*************************************<->*************************************
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* int BaseWindowX (pcd)
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Description:
|
|
Packit |
b099d7 |
* -----------
|
|
Packit |
b099d7 |
* Returns the X coord of the base window in the frame
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Inputs:
|
|
Packit |
b099d7 |
* ------
|
|
Packit |
b099d7 |
* pcd - pointer to client data record
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Outputs:
|
|
Packit |
b099d7 |
* -------
|
|
Packit |
b099d7 |
* BaseWindowX
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Comments:
|
|
Packit |
b099d7 |
* --------
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*************************************<->***********************************/
|
|
Packit |
b099d7 |
int BaseWindowX (ClientData *pcd)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
int rval;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (pcd->decor & (MWM_DECOR_RESIZEH | MWM_DECOR_BORDER))
|
|
Packit |
b099d7 |
rval = LowerBorderWidth(pcd);
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
rval = 0;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return (rval);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*************************************<->*************************************
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* int BaseWindowY (pcd)
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Description:
|
|
Packit |
b099d7 |
* -----------
|
|
Packit |
b099d7 |
* Returns the Y coord of the base window in the frame
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Inputs:
|
|
Packit |
b099d7 |
* ------
|
|
Packit |
b099d7 |
* pcd - pointer to client data record
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Outputs:
|
|
Packit |
b099d7 |
* -------
|
|
Packit |
b099d7 |
* BaseWindowY
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Comments:
|
|
Packit |
b099d7 |
* --------
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*************************************<->***********************************/
|
|
Packit |
b099d7 |
int BaseWindowY (ClientData *pcd)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
int rval;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (pcd->decor & (MWM_DECOR_RESIZEH | MWM_DECOR_BORDER))
|
|
Packit |
b099d7 |
rval = UpperBorderWidth (pcd) + TitleBarHeight(pcd);
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
rval = TitleBarHeight(pcd);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return (rval);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*************************************<->*************************************
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* int FrameX (pcd)
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Description:
|
|
Packit |
b099d7 |
* -----------
|
|
Packit |
b099d7 |
* Returns the X-coordinate of the frame for the window
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Inputs:
|
|
Packit |
b099d7 |
* ------
|
|
Packit |
b099d7 |
* pcd - pointer to client data record
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Outputs:
|
|
Packit |
b099d7 |
* -------
|
|
Packit |
b099d7 |
* FrameX - X position of frame
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Comments:
|
|
Packit |
b099d7 |
* --------
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*************************************<->***********************************/
|
|
Packit |
b099d7 |
int FrameX (ClientData *pcd)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
int frameX;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
frameX = ((pcd->maxConfig) ? pcd->maxX : pcd->clientX)
|
|
Packit |
b099d7 |
- LowerBorderWidth (pcd) - pcd->matteWidth;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return (frameX);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*************************************<->*************************************
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* int FrameY (pcd)
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Description:
|
|
Packit |
b099d7 |
* -----------
|
|
Packit |
b099d7 |
* Returns the Y-coordinate of the frame for the window
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Inputs:
|
|
Packit |
b099d7 |
* ------
|
|
Packit |
b099d7 |
* pcd - pointer to client data record
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Outputs:
|
|
Packit |
b099d7 |
* -------
|
|
Packit |
b099d7 |
* FrameY - Y position of frame
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Comments:
|
|
Packit |
b099d7 |
* --------
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*************************************<->***********************************/
|
|
Packit |
b099d7 |
int FrameY (ClientData *pcd)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
int frameY;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
frameY = ((pcd->maxConfig) ? pcd->maxY : pcd->clientY)
|
|
Packit |
b099d7 |
- UpperBorderWidth (pcd)
|
|
Packit |
b099d7 |
- TitleBarHeight (pcd) - pcd->matteWidth;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if ((pcd->decor & MWM_DECOR_TITLE) &&
|
|
Packit |
b099d7 |
!(pcd->decor & (MWM_DECOR_RESIZEH | MWM_DECOR_BORDER)) &&
|
|
Packit |
b099d7 |
!(pcd->matteWidth))
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
frameY -= pcd->xBorderWidth;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return (frameY);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*************************************<->*************************************
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* unsigned int BaseWindowWidth (pcd)
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Description:
|
|
Packit |
b099d7 |
* -----------
|
|
Packit |
b099d7 |
* Returns the width of the base window
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Inputs:
|
|
Packit |
b099d7 |
* ------
|
|
Packit |
b099d7 |
* pcd - pointer to client data record
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Outputs:
|
|
Packit |
b099d7 |
* -------
|
|
Packit |
b099d7 |
* BaseWindowWidth
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Comments:
|
|
Packit |
b099d7 |
* --------
|
|
Packit |
b099d7 |
* o Based on code taken out of FrameWidth to make it a little
|
|
Packit |
b099d7 |
* more efficient.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*************************************<->***********************************/
|
|
Packit |
b099d7 |
unsigned int BaseWindowWidth (ClientData *pcd)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
unsigned int rval;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (pcd->decor & (MWM_DECOR_RESIZEH | MWM_DECOR_BORDER))
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* rval = FrameWidth(pcd) - 2*LowerBorderWidth(pcd);
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
rval = ((pcd->maxConfig) ? pcd->maxWidth : pcd->clientWidth) +
|
|
Packit |
b099d7 |
2*pcd->matteWidth;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* rval = FrameWidth(pcd);
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
rval = ((pcd->maxConfig) ? pcd->maxWidth : pcd->clientWidth) +
|
|
Packit |
b099d7 |
2*pcd->matteWidth + 2*LowerBorderWidth (pcd);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return (rval);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*************************************<->*************************************
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* unsigned int BaseWindowHeight (pcd)
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Description:
|
|
Packit |
b099d7 |
* -----------
|
|
Packit |
b099d7 |
* Returns the height of the base window
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Inputs:
|
|
Packit |
b099d7 |
* ------
|
|
Packit |
b099d7 |
* pcd - pointer to client data record
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Outputs:
|
|
Packit |
b099d7 |
* -------
|
|
Packit |
b099d7 |
* BaseWindowHeight
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Comments:
|
|
Packit |
b099d7 |
* --------
|
|
Packit |
b099d7 |
* o Based on code taken out of FrameHeight to make it a little
|
|
Packit |
b099d7 |
* more efficient.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*************************************<->***********************************/
|
|
Packit |
b099d7 |
unsigned int BaseWindowHeight (ClientData *pcd)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
unsigned int rval;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (pcd->decor & (MWM_DECOR_RESIZEH | MWM_DECOR_BORDER))
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* rval = FrameHeight(pcd) - LowerBorderWidth(pcd) -
|
|
Packit |
b099d7 |
* UpperBorderWidth(pcd) - TitleBarHeight(pcd);
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
rval = ((pcd->maxConfig) ? pcd->maxHeight : pcd->clientHeight) +
|
|
Packit |
b099d7 |
2*pcd->matteWidth;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* rval = FrameHeight(pcd) - TitleBarHeight(pcd);
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
rval = ((pcd->maxConfig) ? pcd->maxHeight : pcd->clientHeight) +
|
|
Packit |
b099d7 |
2*pcd->matteWidth + 2*LowerBorderWidth (pcd);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return (rval);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*************************************<->*************************************
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Boolean GetFramePartInfo (pcd, part, pX, pY, pWidth, pHeight)
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Description:
|
|
Packit |
b099d7 |
* -----------
|
|
Packit |
b099d7 |
* Gets frame relative position and size of the specified frame part
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Inputs:
|
|
Packit |
b099d7 |
* ------
|
|
Packit |
b099d7 |
* pcd - pointer to client data
|
|
Packit |
b099d7 |
* part - part id (e.g. FRAME_TITLE, FRAME_SYSTEM, etc.)
|
|
Packit |
b099d7 |
* pX - pointer to x-coord return value
|
|
Packit |
b099d7 |
* pY - pointer to y-coord return value
|
|
Packit |
b099d7 |
* pWidth - pointer to width return value
|
|
Packit |
b099d7 |
* pHeight - pointer to width return value
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Outputs:
|
|
Packit |
b099d7 |
* -------
|
|
Packit |
b099d7 |
* Return - True if values returned, false if no such part for this
|
|
Packit |
b099d7 |
* frame (values undefined).
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Comments:
|
|
Packit |
b099d7 |
* --------
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*************************************<->***********************************/
|
|
Packit |
b099d7 |
Boolean GetFramePartInfo (ClientData *pcd, int part, int *pX, int *pY, unsigned int *pWidth, unsigned int *pHeight)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
unsigned int boxdim = TitleBarHeight (pcd);
|
|
Packit |
b099d7 |
unsigned long decor = pcd->decor;
|
|
Packit |
b099d7 |
int vert, horiz;
|
|
Packit |
b099d7 |
Boolean rval = FALSE;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
switch (part)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
case FRAME_SYSTEM:
|
|
Packit |
b099d7 |
if (decor & MWM_DECOR_MENU) {
|
|
Packit |
b099d7 |
*pX = pcd->frameInfo.upperBorderWidth;
|
|
Packit |
b099d7 |
*pY = pcd->frameInfo.upperBorderWidth;
|
|
Packit |
b099d7 |
*pWidth = boxdim;
|
|
Packit |
b099d7 |
*pHeight = boxdim;
|
|
Packit |
b099d7 |
rval = TRUE;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case FRAME_TITLE:
|
|
Packit |
b099d7 |
if (decor & MWM_DECOR_TITLE) {
|
|
Packit |
b099d7 |
*pX = pcd->frameInfo.upperBorderWidth +
|
|
Packit |
b099d7 |
((decor & MWM_DECOR_MENU) ? boxdim : 0);
|
|
Packit |
b099d7 |
*pY = pcd->frameInfo.upperBorderWidth;
|
|
Packit |
b099d7 |
*pWidth = pcd->frameInfo.width -
|
|
Packit |
b099d7 |
2*pcd->frameInfo.upperBorderWidth -
|
|
Packit |
b099d7 |
((decor & MWM_DECOR_MENU) ? boxdim : 0) -
|
|
Packit |
b099d7 |
((decor & MWM_DECOR_MINIMIZE) ? boxdim : 0) -
|
|
Packit |
b099d7 |
((decor & MWM_DECOR_MAXIMIZE) ? boxdim : 0);
|
|
Packit |
b099d7 |
*pHeight = boxdim;
|
|
Packit |
b099d7 |
rval = TRUE;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
#ifdef WSM
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case FRAME_TITLEBAR:
|
|
Packit |
b099d7 |
if (decor & MWM_DECOR_TITLE) {
|
|
Packit |
b099d7 |
*pX = pcd->frameInfo.upperBorderWidth;
|
|
Packit |
b099d7 |
*pY = pcd->frameInfo.upperBorderWidth;
|
|
Packit |
b099d7 |
*pWidth = pcd->frameInfo.width -
|
|
Packit |
b099d7 |
2*pcd->frameInfo.upperBorderWidth;
|
|
Packit |
b099d7 |
*pHeight = boxdim;
|
|
Packit |
b099d7 |
rval = TRUE;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
#endif /* WSM */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case FRAME_MINIMIZE:
|
|
Packit |
b099d7 |
if (decor & MWM_DECOR_MINIMIZE) {
|
|
Packit |
b099d7 |
*pX = pcd->frameInfo.width -
|
|
Packit |
b099d7 |
pcd->frameInfo.upperBorderWidth - boxdim -
|
|
Packit |
b099d7 |
((decor & MWM_DECOR_MAXIMIZE) ? boxdim : 0);
|
|
Packit |
b099d7 |
*pY = pcd->frameInfo.upperBorderWidth;
|
|
Packit |
b099d7 |
*pWidth= boxdim;
|
|
Packit |
b099d7 |
*pHeight = boxdim;
|
|
Packit |
b099d7 |
rval = TRUE;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case FRAME_MAXIMIZE:
|
|
Packit |
b099d7 |
if (decor & MWM_DECOR_MAXIMIZE) {
|
|
Packit |
b099d7 |
*pX = pcd->frameInfo.width -
|
|
Packit |
b099d7 |
pcd->frameInfo.upperBorderWidth - boxdim;
|
|
Packit |
b099d7 |
*pY = pcd->frameInfo.upperBorderWidth;
|
|
Packit |
b099d7 |
*pWidth = boxdim;
|
|
Packit |
b099d7 |
*pHeight = boxdim;
|
|
Packit |
b099d7 |
rval = TRUE;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* For very small windows, the resize pieces will shrink
|
|
Packit |
b099d7 |
* equally until the corner pieces get within two pixels
|
|
Packit |
b099d7 |
* of the resize border width. At this point the "side" section
|
|
Packit |
b099d7 |
* is killed off (by giving it a zero length) and the corner
|
|
Packit |
b099d7 |
* pieces claim the additional space
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
case FRAME_RESIZE_NW:
|
|
Packit |
b099d7 |
if (decor & MWM_DECOR_RESIZEH) {
|
|
Packit |
b099d7 |
*pX = 0;
|
|
Packit |
b099d7 |
*pY = 0;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if ((int)pcd->frameInfo.cornerWidth >
|
|
Packit |
b099d7 |
(int)pcd->frameInfo.lowerBorderWidth+2) {
|
|
Packit |
b099d7 |
*pWidth = pcd->frameInfo.cornerWidth;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else {
|
|
Packit |
b099d7 |
horiz = pcd->frameInfo.width -
|
|
Packit |
b099d7 |
2*pcd->frameInfo.cornerWidth;
|
|
Packit |
b099d7 |
*pWidth = pcd->frameInfo.cornerWidth +
|
|
Packit |
b099d7 |
horiz/2 + horiz%2;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if ((int)pcd->frameInfo.cornerHeight >
|
|
Packit |
b099d7 |
(int)pcd->frameInfo.lowerBorderWidth+2) {
|
|
Packit |
b099d7 |
*pHeight = pcd->frameInfo.cornerHeight;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else {
|
|
Packit |
b099d7 |
vert = pcd->frameInfo.height -
|
|
Packit |
b099d7 |
2*pcd->frameInfo.cornerHeight;
|
|
Packit |
b099d7 |
*pHeight = pcd->frameInfo.cornerHeight +
|
|
Packit |
b099d7 |
vert/2 + vert%2;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
rval = TRUE;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case FRAME_RESIZE_N:
|
|
Packit |
b099d7 |
if (decor & MWM_DECOR_RESIZEH) {
|
|
Packit |
b099d7 |
*pX = pcd->frameInfo.cornerWidth;
|
|
Packit |
b099d7 |
*pY = 0;
|
|
Packit |
b099d7 |
*pHeight = pcd->frameInfo.upperBorderWidth;
|
|
Packit |
b099d7 |
if ((int)pcd->frameInfo.cornerWidth >
|
|
Packit |
b099d7 |
(int)pcd->frameInfo.lowerBorderWidth+2) {
|
|
Packit |
b099d7 |
*pWidth = pcd->frameInfo.width -
|
|
Packit |
b099d7 |
2*pcd->frameInfo.cornerWidth;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else {
|
|
Packit |
b099d7 |
*pWidth = 0;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
rval = TRUE;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case FRAME_RESIZE_NE:
|
|
Packit |
b099d7 |
if (decor & MWM_DECOR_RESIZEH) {
|
|
Packit |
b099d7 |
if ((int)pcd->frameInfo.cornerWidth >
|
|
Packit |
b099d7 |
(int)pcd->frameInfo.lowerBorderWidth+2) {
|
|
Packit |
b099d7 |
*pWidth = pcd->frameInfo.cornerWidth;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else {
|
|
Packit |
b099d7 |
horiz = pcd->frameInfo.width -
|
|
Packit |
b099d7 |
2*pcd->frameInfo.cornerWidth;
|
|
Packit |
b099d7 |
*pWidth = pcd->frameInfo.cornerWidth + horiz/2;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
*pX = pcd->frameInfo.width - *pWidth;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if ((int)pcd->frameInfo.cornerHeight >
|
|
Packit |
b099d7 |
(int)pcd->frameInfo.lowerBorderWidth+2) {
|
|
Packit |
b099d7 |
*pHeight = pcd->frameInfo.cornerHeight;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else {
|
|
Packit |
b099d7 |
vert = pcd->frameInfo.height -
|
|
Packit |
b099d7 |
2*pcd->frameInfo.cornerHeight;
|
|
Packit |
b099d7 |
*pHeight = pcd->frameInfo.cornerHeight +
|
|
Packit |
b099d7 |
vert/2 + vert%2;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
*pY = 0;
|
|
Packit |
b099d7 |
rval = TRUE;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case FRAME_RESIZE_E:
|
|
Packit |
b099d7 |
if (decor & MWM_DECOR_RESIZEH) {
|
|
Packit |
b099d7 |
*pX = pcd->frameInfo.width -
|
|
Packit |
b099d7 |
pcd->frameInfo.lowerBorderWidth;
|
|
Packit |
b099d7 |
*pY = pcd->frameInfo.cornerHeight;
|
|
Packit |
b099d7 |
*pWidth = pcd->frameInfo.lowerBorderWidth;
|
|
Packit |
b099d7 |
if ((int)pcd->frameInfo.cornerHeight >
|
|
Packit |
b099d7 |
(int)pcd->frameInfo.lowerBorderWidth+2) {
|
|
Packit |
b099d7 |
*pHeight = pcd->frameInfo.height -
|
|
Packit |
b099d7 |
2*pcd->frameInfo.cornerHeight;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else {
|
|
Packit |
b099d7 |
*pHeight = 0;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
rval = TRUE;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case FRAME_RESIZE_SE:
|
|
Packit |
b099d7 |
if (decor & MWM_DECOR_RESIZEH) {
|
|
Packit |
b099d7 |
if ((int)pcd->frameInfo.cornerWidth >
|
|
Packit |
b099d7 |
(int)pcd->frameInfo.lowerBorderWidth+2) {
|
|
Packit |
b099d7 |
*pWidth = pcd->frameInfo.cornerWidth;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else {
|
|
Packit |
b099d7 |
horiz = pcd->frameInfo.width -
|
|
Packit |
b099d7 |
2*pcd->frameInfo.cornerWidth;
|
|
Packit |
b099d7 |
*pWidth = pcd->frameInfo.cornerWidth + horiz/2;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
*pX = pcd->frameInfo.width - *pWidth;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if ((int)pcd->frameInfo.cornerHeight >
|
|
Packit |
b099d7 |
(int)pcd->frameInfo.lowerBorderWidth+2) {
|
|
Packit |
b099d7 |
*pHeight = pcd->frameInfo.cornerHeight;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else {
|
|
Packit |
b099d7 |
vert = pcd->frameInfo.height -
|
|
Packit |
b099d7 |
2*pcd->frameInfo.cornerHeight;
|
|
Packit |
b099d7 |
*pHeight = pcd->frameInfo.cornerHeight + vert/2;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
*pY = pcd->frameInfo.height - *pHeight;
|
|
Packit |
b099d7 |
rval = TRUE;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case FRAME_RESIZE_S:
|
|
Packit |
b099d7 |
if (decor & MWM_DECOR_RESIZEH) {
|
|
Packit |
b099d7 |
*pX = pcd->frameInfo.cornerWidth;
|
|
Packit |
b099d7 |
*pY = pcd->frameInfo.height -
|
|
Packit |
b099d7 |
pcd->frameInfo.lowerBorderWidth;
|
|
Packit |
b099d7 |
if ((int)pcd->frameInfo.cornerWidth >
|
|
Packit |
b099d7 |
(int)pcd->frameInfo.lowerBorderWidth+2) {
|
|
Packit |
b099d7 |
*pWidth = pcd->frameInfo.width -
|
|
Packit |
b099d7 |
2*pcd->frameInfo.cornerWidth;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else {
|
|
Packit |
b099d7 |
*pWidth = 0;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
*pHeight = pcd->frameInfo.lowerBorderWidth;
|
|
Packit |
b099d7 |
rval = TRUE;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case FRAME_RESIZE_SW:
|
|
Packit |
b099d7 |
if (decor & MWM_DECOR_RESIZEH) {
|
|
Packit |
b099d7 |
if ((int)pcd->frameInfo.cornerWidth >
|
|
Packit |
b099d7 |
(int)pcd->frameInfo.lowerBorderWidth+2) {
|
|
Packit |
b099d7 |
*pWidth = pcd->frameInfo.cornerWidth;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else {
|
|
Packit |
b099d7 |
horiz = pcd->frameInfo.width -
|
|
Packit |
b099d7 |
2*pcd->frameInfo.cornerWidth;
|
|
Packit |
b099d7 |
*pWidth = pcd->frameInfo.cornerWidth +
|
|
Packit |
b099d7 |
horiz/2 + horiz%2;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
*pX = 0;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if ((int)pcd->frameInfo.cornerHeight >
|
|
Packit |
b099d7 |
(int)pcd->frameInfo.lowerBorderWidth+2) {
|
|
Packit |
b099d7 |
*pHeight = pcd->frameInfo.cornerHeight;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else {
|
|
Packit |
b099d7 |
vert = pcd->frameInfo.height -
|
|
Packit |
b099d7 |
2*pcd->frameInfo.cornerHeight;
|
|
Packit |
b099d7 |
*pHeight = pcd->frameInfo.cornerHeight + vert/2;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
*pY = pcd->frameInfo.height - *pHeight;
|
|
Packit |
b099d7 |
rval = TRUE;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case FRAME_RESIZE_W:
|
|
Packit |
b099d7 |
if (decor & MWM_DECOR_RESIZEH) {
|
|
Packit |
b099d7 |
*pX = 0;
|
|
Packit |
b099d7 |
*pY = pcd->frameInfo.cornerHeight;
|
|
Packit |
b099d7 |
*pWidth = pcd->frameInfo.lowerBorderWidth;
|
|
Packit |
b099d7 |
if ((int)pcd->frameInfo.cornerHeight >
|
|
Packit |
b099d7 |
(int)pcd->frameInfo.lowerBorderWidth+2) {
|
|
Packit |
b099d7 |
*pHeight = pcd->frameInfo.height -
|
|
Packit |
b099d7 |
2*pcd->frameInfo.cornerHeight;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else {
|
|
Packit |
b099d7 |
*pHeight = 0;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
rval = TRUE;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
default:
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
return(rval);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*************************************<->*************************************
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* IdentifyFramePart (pCD, x, y)
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Description:
|
|
Packit |
b099d7 |
* -----------
|
|
Packit |
b099d7 |
* Returns an ID representing which part of the frame received the event
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Inputs:
|
|
Packit |
b099d7 |
* ------
|
|
Packit |
b099d7 |
* pCD - pointer to client data
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* x, y - client coordinates of event
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Outputs:
|
|
Packit |
b099d7 |
* -------
|
|
Packit |
b099d7 |
* Return - ID of frame part where the button event occurred.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Comments:
|
|
Packit |
b099d7 |
* --------
|
|
Packit |
b099d7 |
*************************************<->***********************************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
int IdentifyFramePart (ClientData *pCD, int x, int y)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
unsigned long decor = pCD->decor;
|
|
Packit |
b099d7 |
int clientWidth = (pCD->maxConfig) ? pCD->maxWidth : pCD->clientWidth;
|
|
Packit |
b099d7 |
int clientHeight= (pCD->maxConfig) ? pCD->maxHeight : pCD->clientHeight;
|
|
Packit |
b099d7 |
int rval;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* check for client window */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if ( (x >= pCD->clientOffset.x) &&
|
|
Packit |
b099d7 |
(x < pCD->clientOffset.x + clientWidth) &&
|
|
Packit |
b099d7 |
(y >= pCD->clientOffset.y) &&
|
|
Packit |
b099d7 |
(y < pCD->clientOffset.y + clientHeight) )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
return (FRAME_CLIENT);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* check for client matte */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (pCD->matteWidth)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if ( (x >= pCD->matteRectangle.x) &&
|
|
Packit |
b099d7 |
(x < (int)pCD->matteRectangle.x + (int)pCD->matteRectangle.width) &&
|
|
Packit |
b099d7 |
(y >= pCD->matteRectangle.y) &&
|
|
Packit |
b099d7 |
(y < (int)pCD->matteRectangle.y + (int)pCD->matteRectangle.height) )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
return (FRAME_MATTE);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* check title bar */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (decor & MWM_DECOR_TITLE)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if ( (x >= pCD->titleRectangle.x) &&
|
|
Packit |
b099d7 |
(x < (int)pCD->titleRectangle.x + (int)pCD->titleRectangle.width) &&
|
|
Packit |
b099d7 |
(y >= pCD->titleRectangle.y) &&
|
|
Packit |
b099d7 |
(y < (int)pCD->titleRectangle.y + (int)pCD->titleRectangle.height) )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
return(GadgetID(x, y, pCD->pTitleGadgets,
|
|
Packit |
b099d7 |
(unsigned int)pCD->cTitleGadgets));
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* try resize border */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (decor & MWM_DECOR_RESIZEH)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
rval = GadgetID(x, y, pCD->pResizeGadgets, STRETCH_COUNT);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
rval = FRAME_NONE;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* if not a resize border, but still in bounds return FRAME_NBORDER */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (rval == FRAME_NONE)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if ((x >= 0) && (y >= 0) &&
|
|
Packit |
b099d7 |
(x < FrameWidth (pCD)) && (y < FrameHeight (pCD)))
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
rval = FRAME_NBORDER;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return (rval);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
} /* END OF FUNCTION IdentifyFramePart */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*************************************<->*************************************
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* GadgetID (x, y, pgadget, count)
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Description:
|
|
Packit |
b099d7 |
* -----------
|
|
Packit |
b099d7 |
* returns the id of the gadget in the list that the event occured in
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Inputs:
|
|
Packit |
b099d7 |
* ------
|
|
Packit |
b099d7 |
* x - x coordinate of event
|
|
Packit |
b099d7 |
* y - y coordinate of event
|
|
Packit |
b099d7 |
* pgadget - pointer to a list of GadgetRectangles
|
|
Packit |
b099d7 |
* count - number of elements in the pgadget list
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Outputs:
|
|
Packit |
b099d7 |
* -------
|
|
Packit |
b099d7 |
* Return - ID of gadget if found, FRAME_NONE if not found
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Comments:
|
|
Packit |
b099d7 |
* --------
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*************************************<->***********************************/
|
|
Packit |
b099d7 |
int GadgetID (int x, int y, GadgetRectangle *pgadget, unsigned int count)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
int ix;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
for (ix = 0; ix < count; ix++, pgadget++) {
|
|
Packit |
b099d7 |
if ( (x >= pgadget->rect.x) &&
|
|
Packit |
b099d7 |
(x < (int)pgadget->rect.x + (int)pgadget->rect.width) &&
|
|
Packit |
b099d7 |
(y >= pgadget->rect.y) &&
|
|
Packit |
b099d7 |
(y < (int)pgadget->rect.y + (int)pgadget->rect.height) ) {
|
|
Packit |
b099d7 |
return ((unsigned long) pgadget->id);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
return(FRAME_NONE);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*************************************<->*************************************
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* FrameToClient (pcd, pX, pY, pWidth, pHeight)
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Description:
|
|
Packit |
b099d7 |
* -----------
|
|
Packit |
b099d7 |
* Converts frame position and size to client position and size
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Inputs:
|
|
Packit |
b099d7 |
* ------
|
|
Packit |
b099d7 |
* pcd - pointer to client data
|
|
Packit |
b099d7 |
* pX - pointer to frame x-coord
|
|
Packit |
b099d7 |
* pY - pointer to frame y-coord
|
|
Packit |
b099d7 |
* pWidth - pointer to frame width in pixels
|
|
Packit |
b099d7 |
* pHeight - pointer to frame height in pixels
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Outputs:
|
|
Packit |
b099d7 |
* -------
|
|
Packit |
b099d7 |
* *pX - client x-coord
|
|
Packit |
b099d7 |
* *pY - client y-coord
|
|
Packit |
b099d7 |
* *pWidth - client width in pixels
|
|
Packit |
b099d7 |
* *pHeight - client height in pixels
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Comments:
|
|
Packit |
b099d7 |
* --------
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*************************************<->***********************************/
|
|
Packit |
b099d7 |
void FrameToClient (ClientData *pcd, int *pX, int *pY, unsigned int *pWidth, unsigned int *pHeight)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
/* compute client window coordinates from frame coordinates */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
*pWidth = *pWidth - 2*pcd->clientOffset.x;
|
|
Packit |
b099d7 |
*pHeight = *pHeight - pcd->clientOffset.x - pcd->clientOffset.y;
|
|
Packit |
b099d7 |
*pX = *pX + pcd->clientOffset.x;
|
|
Packit |
b099d7 |
*pY = *pY + pcd->clientOffset.y;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*************************************<->*************************************
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* ClientToFrame (pcd, pX, pY, pWidth, pHeight)
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Description:
|
|
Packit |
b099d7 |
* -----------
|
|
Packit |
b099d7 |
* Converts frame position and size to client position and size
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Inputs:
|
|
Packit |
b099d7 |
* ------
|
|
Packit |
b099d7 |
* pcd - pointer to client data
|
|
Packit |
b099d7 |
* pX - client x-coord
|
|
Packit |
b099d7 |
* pY - client y-coord
|
|
Packit |
b099d7 |
* pWidth - client width in pixels
|
|
Packit |
b099d7 |
* pHeight - client height in pixels
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Outputs:
|
|
Packit |
b099d7 |
* -------
|
|
Packit |
b099d7 |
* *pX - frame x-coord
|
|
Packit |
b099d7 |
* *pY - frame y-coord
|
|
Packit |
b099d7 |
* *pWidth - frame width in pixels
|
|
Packit |
b099d7 |
* *pHeight - frame height in pixels
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Comments:
|
|
Packit |
b099d7 |
* --------
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*************************************<->***********************************/
|
|
Packit |
b099d7 |
void ClientToFrame (ClientData *pcd, int *pX, int *pY, unsigned int *pWidth, unsigned int *pHeight)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
/* compute client window coordinates from frame coordinates */
|
|
Packit |
b099d7 |
*pWidth = *pWidth + 2*pcd->clientOffset.x;
|
|
Packit |
b099d7 |
*pHeight = *pHeight + pcd->clientOffset.x + pcd->clientOffset.y;
|
|
Packit |
b099d7 |
*pX = *pX - pcd->clientOffset.x;
|
|
Packit |
b099d7 |
*pY = *pY - pcd->clientOffset.y;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*************************************<->*************************************
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Boolean GetDepressInfo (pcd, part, pX, pY, pWidth, pHeight)
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Description:
|
|
Packit |
b099d7 |
* -----------
|
|
Packit |
b099d7 |
* Gets frame relative position, size, and width of the beveling
|
|
Packit |
b099d7 |
* to show the gadget in its depressed state.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Inputs:
|
|
Packit |
b099d7 |
* ------
|
|
Packit |
b099d7 |
* pcd - pointer to client data
|
|
Packit |
b099d7 |
* part - part id (e.g. FRAME_TITLE, FRAME_SYSTEM, etc.)
|
|
Packit |
b099d7 |
* pX - pointer to x-coord return value
|
|
Packit |
b099d7 |
* pY - pointer to y-coord return value
|
|
Packit |
b099d7 |
* pWidth - pointer to width return value
|
|
Packit |
b099d7 |
* pHeight - pointer to width return value
|
|
Packit |
b099d7 |
* pInverWidth - pointer to inversion width return value
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Outputs:
|
|
Packit |
b099d7 |
* -------
|
|
Packit |
b099d7 |
* Return - True if values returned, false if no such part for this
|
|
Packit |
b099d7 |
* frame (values undefined).
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Comments:
|
|
Packit |
b099d7 |
* --------
|
|
Packit |
b099d7 |
* o The "part" must be a title bar gadget.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*************************************<->***********************************/
|
|
Packit |
b099d7 |
Boolean GetDepressInfo (ClientData *pcd, int part, int *pX, int *pY, unsigned int *pWidth, unsigned int *pHeight, unsigned int *pInvertWidth)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
Boolean rval;
|
|
Packit |
b099d7 |
unsigned int exBevel, eBevel;
|
|
Packit |
b099d7 |
unsigned int wBevel, sBevel;
|
|
Packit |
b099d7 |
unsigned int insideBevel, meBevel;
|
|
Packit |
b099d7 |
unsigned int decoration = pcd->decor;
|
|
Packit |
b099d7 |
unsigned int tmp;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
switch (part)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
case FRAME_SYSTEM:
|
|
Packit |
b099d7 |
case FRAME_TITLE:
|
|
Packit |
b099d7 |
case FRAME_MINIMIZE:
|
|
Packit |
b099d7 |
case FRAME_MAXIMIZE:
|
|
Packit |
b099d7 |
if ((rval = GetFramePartInfo (pcd, part, pX, pY, pWidth, pHeight)))
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* set bevel width based on join bevel
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
*pInvertWidth = 1 + (JOIN_BEVEL(pcd) / 2);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* bevel between title and client (or matte) */
|
|
Packit |
b099d7 |
insideBevel = (pcd->matteWidth > 0) ? JOIN_BEVEL(pcd) :
|
|
Packit |
b099d7 |
pcd->internalBevel;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Compute beveling around the title area of the
|
|
Packit |
b099d7 |
* title bar.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
if (decoration & (MWM_DECOR_RESIZEH | MWM_DECOR_BORDER))
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
exBevel = JOIN_BEVEL(pcd); /* north side */
|
|
Packit |
b099d7 |
sBevel = insideBevel; /* south side */
|
|
Packit |
b099d7 |
eBevel = JOIN_BEVEL(pcd); /* east side */
|
|
Packit |
b099d7 |
wBevel = JOIN_BEVEL(pcd); /* west side */
|
|
Packit |
b099d7 |
meBevel = JOIN_BEVEL(pcd); /* east of Min */
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
/* borderless window */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
exBevel = EXTERNAL_BEVEL(pcd);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
sBevel = (pcd->matteWidth > 0) ? insideBevel :
|
|
Packit |
b099d7 |
EXTERNAL_BEVEL(pcd);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
eBevel = (decoration & (MWM_DECOR_MINIMIZE |
|
|
Packit |
b099d7 |
MWM_DECOR_MAXIMIZE))?
|
|
Packit |
b099d7 |
JOIN_BEVEL(pcd) : EXTERNAL_BEVEL(pcd);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
wBevel = (decoration & MWM_DECOR_MENU) ?
|
|
Packit |
b099d7 |
JOIN_BEVEL(pcd) : EXTERNAL_BEVEL(pcd);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
meBevel = (decoration & (MWM_DECOR_MAXIMIZE)) ?
|
|
Packit |
b099d7 |
JOIN_BEVEL(pcd) : EXTERNAL_BEVEL(pcd);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Adjust height of all title bar gadgets if necessary.
|
|
Packit |
b099d7 |
* (The bottom bevel is the same for all the pieces.)
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (sBevel > *pInvertWidth)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
*pHeight -= (sBevel - *pInvertWidth);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Adjust the beveling on the other sides of the
|
|
Packit |
b099d7 |
* gadgets.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
switch (part)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
case FRAME_SYSTEM:
|
|
Packit |
b099d7 |
/* west and north sides */
|
|
Packit |
b099d7 |
if (exBevel > *pInvertWidth)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
tmp = exBevel - *pInvertWidth;
|
|
Packit |
b099d7 |
*pX += tmp;
|
|
Packit |
b099d7 |
*pWidth -= tmp;
|
|
Packit |
b099d7 |
*pY += tmp;
|
|
Packit |
b099d7 |
*pHeight -= tmp;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* east side */
|
|
Packit |
b099d7 |
if (wBevel > *pInvertWidth)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
*pWidth -= (wBevel - *pInvertWidth);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case FRAME_TITLE:
|
|
Packit |
b099d7 |
/* west side */
|
|
Packit |
b099d7 |
if (wBevel > *pInvertWidth)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
tmp = wBevel - *pInvertWidth;
|
|
Packit |
b099d7 |
*pX += tmp;
|
|
Packit |
b099d7 |
*pWidth -= tmp;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* north side */
|
|
Packit |
b099d7 |
if (exBevel > *pInvertWidth)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
tmp = exBevel - *pInvertWidth;
|
|
Packit |
b099d7 |
*pY += tmp;
|
|
Packit |
b099d7 |
*pHeight -= tmp;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* east side */
|
|
Packit |
b099d7 |
if (eBevel > *pInvertWidth)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
*pWidth -= eBevel - *pInvertWidth;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case FRAME_MINIMIZE:
|
|
Packit |
b099d7 |
/* north side */
|
|
Packit |
b099d7 |
if (exBevel > *pInvertWidth)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
tmp = exBevel - *pInvertWidth;
|
|
Packit |
b099d7 |
*pY += tmp;
|
|
Packit |
b099d7 |
*pHeight -= tmp;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* west side */
|
|
Packit |
b099d7 |
if (eBevel > *pInvertWidth)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
tmp = eBevel - *pInvertWidth;
|
|
Packit |
b099d7 |
*pX += tmp;
|
|
Packit |
b099d7 |
*pWidth -= tmp;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* east side */
|
|
Packit |
b099d7 |
if (meBevel > *pInvertWidth)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
*pWidth -= meBevel - *pInvertWidth;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case FRAME_MAXIMIZE:
|
|
Packit |
b099d7 |
/* north and east sides */
|
|
Packit |
b099d7 |
if (exBevel > *pInvertWidth)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
tmp = exBevel - *pInvertWidth;
|
|
Packit |
b099d7 |
*pY += tmp;
|
|
Packit |
b099d7 |
*pHeight -= tmp;
|
|
Packit |
b099d7 |
*pWidth -= tmp;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* west side */
|
|
Packit |
b099d7 |
if (eBevel > *pInvertWidth)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
tmp = eBevel - *pInvertWidth;
|
|
Packit |
b099d7 |
*pX += tmp;
|
|
Packit |
b099d7 |
*pWidth -= tmp;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
} /* end switch */
|
|
Packit |
b099d7 |
} /* end case "title bar part" */
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
default:
|
|
Packit |
b099d7 |
rval = False;
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
} /* end switch */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return (rval);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*************************************<->*************************************
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* SetFrameInfo (pcd)
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Description:
|
|
Packit |
b099d7 |
* -----------
|
|
Packit |
b099d7 |
* Sets frame information into client data structure for easy access.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Inputs:
|
|
Packit |
b099d7 |
* ------
|
|
Packit |
b099d7 |
* pcd - pointer to client data
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Outputs:
|
|
Packit |
b099d7 |
* -------
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Comments:
|
|
Packit |
b099d7 |
* --------
|
|
Packit |
b099d7 |
* o Sets values into the FrameInfo component of the client data structure
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*************************************<->***********************************/
|
|
Packit |
b099d7 |
void SetFrameInfo (ClientData *pcd)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* The title bar height value stored in pcd->frameInfo is used by the
|
|
Packit |
b099d7 |
* macro TitleBarHeight(pcd).
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
pcd->frameInfo.titleBarHeight = InitTitleBarHeight (pcd);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
pcd->frameInfo.x = FrameX (pcd);
|
|
Packit |
b099d7 |
pcd->frameInfo.y = FrameY (pcd);
|
|
Packit |
b099d7 |
pcd->frameInfo.width = FrameWidth (pcd);
|
|
Packit |
b099d7 |
pcd->frameInfo.height = FrameHeight (pcd);
|
|
Packit |
b099d7 |
pcd->frameInfo.upperBorderWidth = UpperBorderWidth (pcd);
|
|
Packit |
b099d7 |
pcd->frameInfo.lowerBorderWidth = LowerBorderWidth (pcd);
|
|
Packit |
b099d7 |
pcd->frameInfo.cornerWidth = CornerWidth (pcd);
|
|
Packit |
b099d7 |
pcd->frameInfo.cornerHeight = CornerHeight (pcd);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* set client offset */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if ( (pcd->decor & (MWM_DECOR_RESIZEH | MWM_DECOR_BORDER)) ||
|
|
Packit |
b099d7 |
(pcd->matteWidth > 0) )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* The window has a window manager border.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
pcd->clientOffset.x = pcd->frameInfo.lowerBorderWidth +
|
|
Packit |
b099d7 |
pcd->matteWidth;
|
|
Packit |
b099d7 |
pcd->clientOffset.y = pcd->frameInfo.upperBorderWidth +
|
|
Packit |
b099d7 |
pcd->frameInfo.titleBarHeight +
|
|
Packit |
b099d7 |
pcd->matteWidth;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* No window manager border, the original X border is showing
|
|
Packit |
b099d7 |
* through.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
pcd->clientOffset.x = pcd->xBorderWidth + pcd->matteWidth;
|
|
Packit |
b099d7 |
pcd->clientOffset.y = pcd->xBorderWidth +
|
|
Packit |
b099d7 |
pcd->frameInfo.titleBarHeight +
|
|
Packit |
b099d7 |
pcd->matteWidth;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*************************************<->*************************************
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* SetClientOffset (pcd)
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Description:
|
|
Packit |
b099d7 |
* -----------
|
|
Packit |
b099d7 |
* Sets the client offset into client data structure
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Inputs:
|
|
Packit |
b099d7 |
* ------
|
|
Packit |
b099d7 |
* pcd - pointer to client data
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Outputs:
|
|
Packit |
b099d7 |
* -------
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Comments:
|
|
Packit |
b099d7 |
* --------
|
|
Packit |
b099d7 |
* This can be called before SetFrameInfo to set up the client offset
|
|
Packit |
b099d7 |
* without the danger of using uninitialized variables during
|
|
Packit |
b099d7 |
* extraneous computation.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*************************************<->***********************************/
|
|
Packit |
b099d7 |
void SetClientOffset (ClientData *pcd)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* The title bar height value stored in pcd->frameInfo is used by the
|
|
Packit |
b099d7 |
* macro TitleBarHeight(pcd).
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
pcd->frameInfo.titleBarHeight = InitTitleBarHeight (pcd);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
pcd->frameInfo.upperBorderWidth = UpperBorderWidth (pcd);
|
|
Packit |
b099d7 |
pcd->frameInfo.lowerBorderWidth = LowerBorderWidth (pcd);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* set client offset */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if ( (pcd->decor & (MWM_DECOR_RESIZEH | MWM_DECOR_BORDER)) ||
|
|
Packit |
b099d7 |
(pcd->matteWidth > 0) )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* The window has a window manager border.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
pcd->clientOffset.x = pcd->frameInfo.lowerBorderWidth +
|
|
Packit |
b099d7 |
pcd->matteWidth;
|
|
Packit |
b099d7 |
pcd->clientOffset.y = pcd->frameInfo.upperBorderWidth +
|
|
Packit |
b099d7 |
pcd->frameInfo.titleBarHeight +
|
|
Packit |
b099d7 |
pcd->matteWidth;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* No window manager border, the original X border is showing
|
|
Packit |
b099d7 |
* through.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
pcd->clientOffset.x = pcd->xBorderWidth + pcd->matteWidth;
|
|
Packit |
b099d7 |
pcd->clientOffset.y = pcd->xBorderWidth +
|
|
Packit |
b099d7 |
pcd->frameInfo.titleBarHeight +
|
|
Packit |
b099d7 |
pcd->matteWidth;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*************************************<->*************************************
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* XBorderIsShowing (pcd)
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Description:
|
|
Packit |
b099d7 |
* -----------
|
|
Packit |
b099d7 |
* Returns true if the X border is showing.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Inputs:
|
|
Packit |
b099d7 |
* ------
|
|
Packit |
b099d7 |
* pcd - pointer to client data
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Outputs:
|
|
Packit |
b099d7 |
* -------
|
|
Packit |
b099d7 |
* XBorderIsShowing - True if no window manager border & x border is
|
|
Packit |
b099d7 |
* visible, False otherwise
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Comments:
|
|
Packit |
b099d7 |
* --------
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*************************************<->***********************************/
|
|
Packit |
b099d7 |
Boolean XBorderIsShowing (ClientData *pcd)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
Boolean rval;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if ( (pcd->decor & (MWM_DECOR_RESIZEH | MWM_DECOR_BORDER)) ||
|
|
Packit |
b099d7 |
(pcd->matteWidth > 0) )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
rval = False; /* hidden by window manager */
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
rval = True; /* it's showing */
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
return(rval);
|
|
Packit |
b099d7 |
}
|