|
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 |
/* $TOG: WmCmd.c /main/11 1997/03/20 11:15:26 dbl $
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* (c) Copyright 1996 Digital Equipment Corporation.
|
|
Packit |
b099d7 |
* (c) Copyright 1996 Hewlett-Packard Company.
|
|
Packit |
b099d7 |
* (c) Copyright 1996 International Business Machines Corp.
|
|
Packit |
b099d7 |
* (c) Copyright 1996 Sun Microsystems, Inc.
|
|
Packit |
b099d7 |
* (c) Copyright 1996 Novell, Inc.
|
|
Packit |
b099d7 |
* (c) Copyright 1996 FUJITSU LIMITED.
|
|
Packit |
b099d7 |
* (c) Copyright 1996 Hitachi.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#ifdef HAVE_CONFIG_H
|
|
Packit |
b099d7 |
#include <config.h>
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#include <Xm/Xm.h>
|
|
Packit |
b099d7 |
#include <Xm/ScrollBarP.h>
|
|
Packit |
b099d7 |
#include "./WmWsmLib/utm_send.h"
|
|
Packit |
b099d7 |
#include "./WmWsmLib/wsm_proto.h"
|
|
Packit |
b099d7 |
#include "WmGlobal.h"
|
|
Packit |
b099d7 |
#include "WmFunction.h"
|
|
Packit |
b099d7 |
#include "WmCmd.h"
|
|
Packit |
b099d7 |
#include "WmMenu.h"
|
|
Packit |
b099d7 |
#include "WmResParse.h"
|
|
Packit |
b099d7 |
#include "WmWsm.h"
|
|
Packit |
b099d7 |
#include "WmDebug.h"
|
|
Packit |
b099d7 |
#include "WmWinConf.h"
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define MAX_CLIENT_CMDS 1000
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static CARD32 cmdKillList[MAX_CLIENT_CMDS];
|
|
Packit |
b099d7 |
static unsigned long cmdKillListIndex;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define ScrNum(w) (XScreenNumberOfScreen(XtScreen(w)))
|
|
Packit |
b099d7 |
#define CCI_TREE(w) (wmGD.Screens[ScrNum(w)].cciTree)
|
|
Packit |
b099d7 |
#define CCI_TREE_OF_SCR(scr) (wmGD.Screens[(scr)].cciTree)
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*----------------------------------------------------------------------*
|
|
Packit |
b099d7 |
| NewCommand |
|
|
Packit |
b099d7 |
*----------------------------------------------------------------------*/
|
|
Packit |
b099d7 |
CmdTree *
|
|
Packit |
b099d7 |
NewCommand (
|
|
Packit |
b099d7 |
CARD32 commandID,
|
|
Packit |
b099d7 |
CARD32 notifyWindow,
|
|
Packit |
b099d7 |
char *name,
|
|
Packit |
b099d7 |
char *defaultName)
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
CmdTree *ptr = (CmdTree *) XtMalloc(sizeof(CmdTree));
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
ptr->commandID = commandID;
|
|
Packit |
b099d7 |
ptr->notifyWindow = notifyWindow;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (name != NULL) ptr->name = XtNewString(name);
|
|
Packit |
b099d7 |
else ptr->name = XtNewString("");
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (defaultName != NULL) ptr->defaultName = XtNewString(defaultName);
|
|
Packit |
b099d7 |
else ptr->defaultName = NULL;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
ptr->subTrees = NULL;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
ptr->next = NULL;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return(ptr);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*---------------------------------------------------------------------------*
|
|
Packit |
b099d7 |
| FindCmd |
|
|
Packit |
b099d7 |
*---------------------------------------------------------------------------*/
|
|
Packit |
b099d7 |
CmdTree *
|
|
Packit |
b099d7 |
FindCmd(
|
|
Packit |
b099d7 |
CARD32 commandID,
|
|
Packit |
b099d7 |
CmdTree *menuTree)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
CmdTree *pCmd;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (menuTree != NULL) PRINT("-> %s\n", menuTree->name);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (menuTree == NULL)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
PRINT("<- NULL\n");
|
|
Packit |
b099d7 |
return(NULL);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (menuTree->commandID == commandID)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
PRINT("<- %d, %s\n", commandID, menuTree->name);
|
|
Packit |
b099d7 |
return(menuTree);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if ((pCmd = FindCmd(commandID, menuTree->next)) != NULL)
|
|
Packit |
b099d7 |
return(pCmd);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return(FindCmd(commandID, menuTree->subTrees));
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*---------------------------------------------------------------------------*
|
|
Packit |
b099d7 |
| FindDuplicateName |
|
|
Packit |
b099d7 |
| Scan through commandTree for another defined command with the same name. |
|
|
Packit |
b099d7 |
| Once found, return the ID of the duplicate. Note that at most one match |
|
|
Packit |
b099d7 |
| can be found. If no match is found, 0 is returned. This should NEVER be |
|
|
Packit |
b099d7 |
| the value of a command defined by a client. |
|
|
Packit |
b099d7 |
*---------------------------------------------------------------------------*/
|
|
Packit |
b099d7 |
CARD32
|
|
Packit |
b099d7 |
FindDuplicateName(
|
|
Packit |
b099d7 |
CmdTree *menuTree,
|
|
Packit |
b099d7 |
char *name)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
CmdTree *tmp;
|
|
Packit |
b099d7 |
CARD32 duplicateID;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (menuTree == NULL)
|
|
Packit |
b099d7 |
return(0);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
else if ((menuTree->name != NULL) && (strcmp(menuTree->name, name) == 0))
|
|
Packit |
b099d7 |
return(menuTree->commandID);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
else if ((duplicateID = FindDuplicateName(menuTree->subTrees, name)) != 0)
|
|
Packit |
b099d7 |
return(duplicateID);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
return(FindDuplicateName(menuTree->next, name));
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*----------------------------------------------------------------------*
|
|
Packit |
b099d7 |
| AddCommand |
|
|
Packit |
b099d7 |
| Returns true if the commandSet was found and a new command was added.|
|
|
Packit |
b099d7 |
| Note that toplevel commands have 0 as their commandSet. This will |
|
|
Packit |
b099d7 |
| always match the top entry in the command tree since it is 0. |
|
|
Packit |
b099d7 |
*----------------------------------------------------------------------*/
|
|
Packit |
b099d7 |
Boolean
|
|
Packit |
b099d7 |
AddCommand (
|
|
Packit |
b099d7 |
int scr,
|
|
Packit |
b099d7 |
CARD32 commandSet,
|
|
Packit |
b099d7 |
CARD32 commandID,
|
|
Packit |
b099d7 |
CARD32 notifyWindow,
|
|
Packit |
b099d7 |
char *name,
|
|
Packit |
b099d7 |
char *defaultName,
|
|
Packit |
b099d7 |
CmdTree *ptr)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* For each subtree of the cmdtree, look for the commandset.
|
|
Packit |
b099d7 |
* If found, add the element there else keep looking.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
CmdTree *tmp;
|
|
Packit |
b099d7 |
CARD32 duplicateID;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (ptr == NULL) return (False);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
else if (ptr->commandID == commandSet)
|
|
Packit |
b099d7 |
/* FOUND IT */
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if ((duplicateID = FindDuplicateName(CCI_TREE_OF_SCR(scr), name)) != 0)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
/* a duplicate menu item already exists here, remove it first.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
if (ptr->subTrees != NULL)
|
|
Packit |
b099d7 |
DestroyMenuSpec (&(wmGD.Screens[scr]), commandID);
|
|
Packit |
b099d7 |
DeleteCommand(commandID, &CCI_TREE_OF_SCR(scr));
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
tmp = ptr->subTrees;
|
|
Packit |
b099d7 |
ptr->subTrees = NewCommand(commandID, notifyWindow, name, defaultName);
|
|
Packit |
b099d7 |
ptr->subTrees->next = tmp;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return(True);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
Boolean found;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
found = AddCommand(scr, commandSet, commandID, notifyWindow,
|
|
Packit |
b099d7 |
name, defaultName, ptr->next);
|
|
Packit |
b099d7 |
if (!found)
|
|
Packit |
b099d7 |
found = AddCommand(scr, commandSet, commandID, notifyWindow,
|
|
Packit |
b099d7 |
name, defaultName, ptr->subTrees);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return (found);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*---------------------------------------------------------------------------*
|
|
Packit |
b099d7 |
| RemoveCommandBranch |
|
|
Packit |
b099d7 |
| This routine all commands at the specified node in the command tree. |
|
|
Packit |
b099d7 |
*---------------------------------------------------------------------------*/
|
|
Packit |
b099d7 |
void
|
|
Packit |
b099d7 |
RemoveCommandBranch (CmdTree *menuTree)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
CmdTree *tmp = menuTree;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
while (menuTree != NULL)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if (menuTree->subTrees != (CmdTree*)NULL)
|
|
Packit |
b099d7 |
RemoveCommandBranch(menuTree->subTrees);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
menuTree = menuTree->next;
|
|
Packit |
b099d7 |
if (tmp->name != NULL)
|
|
Packit |
b099d7 |
XtFree((char*)tmp->name);
|
|
Packit |
b099d7 |
XtFree((char*)tmp);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*---------------------------------------------------------------------------*
|
|
Packit |
b099d7 |
| DeleteCommand |
|
|
Packit |
b099d7 |
| This routine deletes any matching command entries in the Command Tree. |
|
|
Packit |
b099d7 |
*---------------------------------------------------------------------------*/
|
|
Packit |
b099d7 |
void
|
|
Packit |
b099d7 |
DeleteCommand (
|
|
Packit |
b099d7 |
long commandID,
|
|
Packit |
b099d7 |
CmdTree **pmenuTree)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if ((pmenuTree == NULL) || (*pmenuTree == NULL))
|
|
Packit |
b099d7 |
return;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
CmdTree *tmp = *pmenuTree;
|
|
Packit |
b099d7 |
CmdTree *prev = NULL;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
while (tmp != (CmdTree *)NULL)
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (tmp->commandID == commandID)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
RemoveCommandBranch(tmp->subTrees); /* remove all sub-commands. */
|
|
Packit |
b099d7 |
if (prev == (CmdTree *)NULL)
|
|
Packit |
b099d7 |
*pmenuTree = tmp->next;
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
prev->next = tmp->next;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (tmp->name != NULL)
|
|
Packit |
b099d7 |
XtFree((char*)tmp->name);
|
|
Packit |
b099d7 |
XtFree((char *)tmp);
|
|
Packit |
b099d7 |
tmp = prev;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if (tmp->subTrees != (CmdTree *)NULL)
|
|
Packit |
b099d7 |
DeleteCommand(commandID, &tmp->subTrees);
|
|
Packit |
b099d7 |
prev = tmp;
|
|
Packit |
b099d7 |
tmp = tmp->next;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*----------------------------------------------------------------------*
|
|
Packit |
b099d7 |
| DefineCommand |
|
|
Packit |
b099d7 |
| hack version - restriction: no spaces allowed in names. |
|
|
Packit |
b099d7 |
*----------------------------------------------------------------------*/
|
|
Packit |
b099d7 |
/*ARGSUSED*/
|
|
Packit |
b099d7 |
void
|
|
Packit |
b099d7 |
DefineCommand (
|
|
Packit |
b099d7 |
Widget w,
|
|
Packit |
b099d7 |
Atom target,
|
|
Packit |
b099d7 |
MessageData data,
|
|
Packit |
b099d7 |
unsigned long len,
|
|
Packit |
b099d7 |
int fmt)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
CARD32 commandID, commandSet, selection, duplicateID;
|
|
Packit |
b099d7 |
String name, defaultLabel;
|
|
Packit |
b099d7 |
Boolean found = False;
|
|
Packit |
b099d7 |
Window owner;
|
|
Packit |
b099d7 |
XWindowAttributes attr;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* check data to make sure somethings there.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
if ((data == NULL) || (len == 0))
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
PRINT("Bad data passed to DefineCommand.\n");
|
|
Packit |
b099d7 |
return;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
commandID = UnpackCARD32(&data);
|
|
Packit |
b099d7 |
selection = UnpackCARD32(&data); /* selection to use for invoke cmd */
|
|
Packit |
b099d7 |
commandSet = UnpackCARD32(&data);
|
|
Packit |
b099d7 |
name = UnpackString(&data);
|
|
Packit |
b099d7 |
defaultLabel = UnpackString(&data);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
PRINT("Define command: %d, %d, '%s', '%s'\n",
|
|
Packit |
b099d7 |
commandID, commandSet, name, defaultLabel);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Add command to menu structure.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (CCI_TREE(w) == NULL)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
CCI_TREE(w) = NewCommand(0, 0, NULL, NULL);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (commandSet != 0)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
found = AddCommand(ScrNum(w), commandSet, commandID, selection, name,
|
|
Packit |
b099d7 |
defaultLabel, CCI_TREE(w));
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* A leaf is being added to the command tree. There should not
|
|
Packit |
b099d7 |
* be any other entries with the same name since matching with
|
|
Packit |
b099d7 |
* the mwm resource file is done on names. If a duplicate is
|
|
Packit |
b099d7 |
* found, remove it first and any menu spec if it is a command
|
|
Packit |
b099d7 |
* set.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
if ((duplicateID = FindDuplicateName(CCI_TREE(w), name)) != 0)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
/* a duplicate menu item already exists here, remove it first.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
DestroyMenuSpec (&(wmGD.Screens[ScrNum(w)]), duplicateID);
|
|
Packit |
b099d7 |
DeleteCommand(duplicateID, &CCI_TREE(w));
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (!found || commandSet == 0)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
CmdTree *tmp;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
tmp = NewCommand(commandID, selection, name, defaultLabel);
|
|
Packit |
b099d7 |
tmp->next = CCI_TREE(w)->next;
|
|
Packit |
b099d7 |
CCI_TREE(w)->next = tmp;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*----------------------------------------------------------------------*
|
|
Packit |
b099d7 |
| IncludeCommand |
|
|
Packit |
b099d7 |
*----------------------------------------------------------------------*/
|
|
Packit |
b099d7 |
/*ARGSUSED*/
|
|
Packit |
b099d7 |
void
|
|
Packit |
b099d7 |
IncludeCommand (
|
|
Packit |
b099d7 |
Widget w,
|
|
Packit |
b099d7 |
Atom target,
|
|
Packit |
b099d7 |
MessageData data,
|
|
Packit |
b099d7 |
unsigned long len,
|
|
Packit |
b099d7 |
int fmt)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
CARD32 inLine, commandID, selection, count;
|
|
Packit |
b099d7 |
Window *windowIDs;
|
|
Packit |
b099d7 |
CmdTree *tPtr, *pNext;
|
|
Packit |
b099d7 |
int i, win;
|
|
Packit |
b099d7 |
unsigned long activeContext = 0L;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* check data to make sure somethings there.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
if ((data == NULL) || (len == 0))
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
PRINT("Bad data passed to IncludeCommand.\n");
|
|
Packit |
b099d7 |
return;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
inLine = UnpackCARD32(&data);
|
|
Packit |
b099d7 |
commandID = UnpackCARD32(&data);
|
|
Packit |
b099d7 |
selection = UnpackCARD32(&data);
|
|
Packit |
b099d7 |
count = UnpackCARD32(&data);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (count > 0) windowIDs = (Window *) XtMalloc(sizeof(Window)*count);
|
|
Packit |
b099d7 |
for (win=0; win
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
windowIDs[win] = UnpackCARD32(&data);
|
|
Packit |
b099d7 |
PRINT("Got window ID %d.\n", windowIDs[win]);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Insert on root menu
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
if ((windowIDs[0] & WINDOW_MASK) == 0L)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
ShowWaitState (TRUE);
|
|
Packit |
b099d7 |
tPtr = FindCmd (commandID, CCI_TREE(w));
|
|
Packit |
b099d7 |
if (tPtr != NULL)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
activeContext = F_CONTEXT_ROOT;
|
|
Packit |
b099d7 |
pNext = tPtr->next;
|
|
Packit |
b099d7 |
tPtr->next = NULL;
|
|
Packit |
b099d7 |
InsertTreeOnRootMenu(ACTIVE_PSD, tPtr, selection, inLine);
|
|
Packit |
b099d7 |
tPtr->next = pNext;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
ShowWaitState (FALSE);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Insert on all clients
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
else if ((windowIDs[0] & WINDOW_MASK) == ALL_WINDOWS)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
tPtr = FindCmd (commandID, CCI_TREE(w));
|
|
Packit |
b099d7 |
if (tPtr != NULL)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
ShowWaitState (TRUE);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
activeContext = 0L;
|
|
Packit |
b099d7 |
if (windowIDs[0] & ICON_ONLY) activeContext |= F_CONTEXT_ICON;
|
|
Packit |
b099d7 |
if (windowIDs[0] & WINDOW_ONLY) activeContext |= F_CONTEXT_WINDOW;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
pNext = tPtr->next;
|
|
Packit |
b099d7 |
tPtr->next = NULL;
|
|
Packit |
b099d7 |
InsertTreeOnAllClients (ACTIVE_PSD, tPtr, selection,
|
|
Packit |
b099d7 |
activeContext, inLine);
|
|
Packit |
b099d7 |
tPtr->next = pNext;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
PRINT("Inserted commandID %d on all windows.\n", commandID);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
ShowWaitState (FALSE);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
PRINT("ERROR - commandID %d not found in command tree.\n", commandID);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Insert on specified clients
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
tPtr = FindCmd (commandID, CCI_TREE(w));
|
|
Packit |
b099d7 |
if (tPtr != NULL)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
ShowWaitState (TRUE);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
for (i=0; i
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
ClientData *pCD;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
activeContext = 0L;
|
|
Packit |
b099d7 |
if (windowIDs[i] & ICON_ONLY)
|
|
Packit |
b099d7 |
activeContext |= F_CONTEXT_ICON;
|
|
Packit |
b099d7 |
if (windowIDs[i] & WINDOW_ONLY)
|
|
Packit |
b099d7 |
activeContext |= F_CONTEXT_WINDOW;
|
|
Packit |
b099d7 |
pCD = GetPCD(ScrNum(w), windowIDs[i] & WINDOW_MASK);
|
|
Packit |
b099d7 |
if (pCD != NULL)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
pNext = tPtr->next;
|
|
Packit |
b099d7 |
tPtr->next = NULL;
|
|
Packit |
b099d7 |
InsertTreeOnSingleClient (pCD->pSD, pCD, tPtr, selection,
|
|
Packit |
b099d7 |
activeContext, inLine);
|
|
Packit |
b099d7 |
tPtr->next = pNext;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
ShowWaitState (FALSE);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
PRINT("ERROR - commandID %d not found in command tree.\n", commandID);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (count > 0)
|
|
Packit |
b099d7 |
XtFree((char*)windowIDs);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*----------------------------------------------------------------------*
|
|
Packit |
b099d7 |
| EnableCommand |
|
|
Packit |
b099d7 |
*----------------------------------------------------------------------*/
|
|
Packit |
b099d7 |
/*ARGSUSED*/
|
|
Packit |
b099d7 |
void
|
|
Packit |
b099d7 |
EnableCommand (
|
|
Packit |
b099d7 |
Widget w,
|
|
Packit |
b099d7 |
Atom target,
|
|
Packit |
b099d7 |
MessageData data,
|
|
Packit |
b099d7 |
unsigned long len,
|
|
Packit |
b099d7 |
int fmt)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
CARD32 commandID, count;
|
|
Packit |
b099d7 |
Window *windowIDs;
|
|
Packit |
b099d7 |
CmdTree *tPtr, *pNext;
|
|
Packit |
b099d7 |
int i, win;
|
|
Packit |
b099d7 |
unsigned long activeContext = 0L;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* check data to make sure somethings there.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
if ((data == NULL) || (len == 0))
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
PRINT("Bad data passed to EnableCommand.\n");
|
|
Packit |
b099d7 |
return;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
commandID = UnpackCARD32(&data);
|
|
Packit |
b099d7 |
count = UnpackCARD32(&data);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (count > 0) windowIDs = (Window *) XtMalloc(sizeof(Window)*count);
|
|
Packit |
b099d7 |
for (win=0; win
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
windowIDs[win] = UnpackCARD32(&data);
|
|
Packit |
b099d7 |
PRINT("Got window ID %d.\n", windowIDs[win]);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Enable on root menu
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
if ((windowIDs[0] & WINDOW_MASK) == 0L)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
tPtr = FindCmd (commandID, CCI_TREE(w));
|
|
Packit |
b099d7 |
if (tPtr != NULL)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
for (i=0; i
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
activeContext = F_CONTEXT_ROOT;
|
|
Packit |
b099d7 |
pNext = tPtr->next;
|
|
Packit |
b099d7 |
tPtr->next = NULL;
|
|
Packit |
b099d7 |
ModifyClientCommandTree (ACTIVE_PSD, NULL, ROOT, tPtr,
|
|
Packit |
b099d7 |
ENABLE, activeContext, NULL);
|
|
Packit |
b099d7 |
tPtr->next = pNext;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
PRINT("ERROR - commandID %d not found in command tree.\n", commandID);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Enable on all clients
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
else if ((windowIDs[0] & WINDOW_MASK) == ALL_WINDOWS)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
tPtr = FindCmd (commandID, CCI_TREE(w));
|
|
Packit |
b099d7 |
if (tPtr != NULL)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
activeContext = 0L;
|
|
Packit |
b099d7 |
if (windowIDs[0] & ICON_ONLY) activeContext |= F_CONTEXT_ICON;
|
|
Packit |
b099d7 |
if (windowIDs[0] & WINDOW_ONLY) activeContext |= F_CONTEXT_WINDOW;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
pNext = tPtr->next;
|
|
Packit |
b099d7 |
tPtr->next = NULL;
|
|
Packit |
b099d7 |
ModifyClientCommandTree (ACTIVE_PSD, NULL, ALL, tPtr, ENABLE,
|
|
Packit |
b099d7 |
activeContext, NULL);
|
|
Packit |
b099d7 |
tPtr->next = pNext;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
PRINT("Enabled commandID %d on all windows.\n", commandID);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
PRINT("ERROR - commandID %d not found in command tree.\n", commandID);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Enable on specified clients
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
tPtr = FindCmd (commandID, CCI_TREE(w));
|
|
Packit |
b099d7 |
if (tPtr != NULL)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
for (i=0; i
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
ClientData *pCD;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
activeContext = 0L;
|
|
Packit |
b099d7 |
if (windowIDs[i] & ICON_ONLY)
|
|
Packit |
b099d7 |
activeContext |= F_CONTEXT_ICON;
|
|
Packit |
b099d7 |
if (windowIDs[i] & WINDOW_ONLY)
|
|
Packit |
b099d7 |
activeContext |= F_CONTEXT_WINDOW;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
pCD = GetPCD(ScrNum(w), windowIDs[i] & WINDOW_MASK);
|
|
Packit |
b099d7 |
if (pCD != NULL)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
pNext = tPtr->next;
|
|
Packit |
b099d7 |
tPtr->next = NULL;
|
|
Packit |
b099d7 |
ModifyClientCommandTree (pCD->pSD, pCD, SINGLE, tPtr,
|
|
Packit |
b099d7 |
ENABLE, activeContext, NULL);
|
|
Packit |
b099d7 |
tPtr->next = pNext;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
PRINT("ERROR - commandID %d not found in command tree.\n", commandID);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (count > 0)
|
|
Packit |
b099d7 |
XtFree((char*)windowIDs);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*----------------------------------------------------------------------*
|
|
Packit |
b099d7 |
| DisableCommand |
|
|
Packit |
b099d7 |
*----------------------------------------------------------------------*/
|
|
Packit |
b099d7 |
/*ARGSUSED*/
|
|
Packit |
b099d7 |
void
|
|
Packit |
b099d7 |
DisableCommand (
|
|
Packit |
b099d7 |
Widget w,
|
|
Packit |
b099d7 |
Atom target,
|
|
Packit |
b099d7 |
MessageData data,
|
|
Packit |
b099d7 |
unsigned long len,
|
|
Packit |
b099d7 |
int fmt)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
CARD32 commandID, count;
|
|
Packit |
b099d7 |
Window *windowIDs;
|
|
Packit |
b099d7 |
CmdTree *tPtr, *pNext;
|
|
Packit |
b099d7 |
int i, win;
|
|
Packit |
b099d7 |
unsigned long activeContext = 0L;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* check data to make sure somethings there.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
if ((data == NULL) || (len == 0))
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
PRINT("Bad data passed to DisableCommand.\n");
|
|
Packit |
b099d7 |
return;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
commandID = UnpackCARD32(&data);
|
|
Packit |
b099d7 |
count = UnpackCARD32(&data);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (count > 0) windowIDs = (Window *) XtMalloc(sizeof(Window)*count);
|
|
Packit |
b099d7 |
for (win=0; win
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
windowIDs[win] = UnpackCARD32(&data);
|
|
Packit |
b099d7 |
PRINT("Got window ID %d.\n", windowIDs[win]);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Disable on root menu
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
if ((windowIDs[0] & WINDOW_MASK) == 0L)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
tPtr = FindCmd (commandID, CCI_TREE(w));
|
|
Packit |
b099d7 |
if (tPtr != NULL)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
for (i=0; i
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
activeContext = F_CONTEXT_ROOT;
|
|
Packit |
b099d7 |
pNext = tPtr->next;
|
|
Packit |
b099d7 |
tPtr->next = NULL;
|
|
Packit |
b099d7 |
ModifyClientCommandTree (ACTIVE_PSD, NULL, ROOT, tPtr,
|
|
Packit |
b099d7 |
DISABLE, activeContext, NULL);
|
|
Packit |
b099d7 |
tPtr->next = pNext;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
PRINT("ERROR - commandID %d not found in command tree.\n", commandID);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Disable on all clients
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
else if ((windowIDs[0] & WINDOW_MASK) == ALL_WINDOWS)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
tPtr = FindCmd (commandID, CCI_TREE(w));
|
|
Packit |
b099d7 |
if (tPtr != NULL)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
activeContext = 0L;
|
|
Packit |
b099d7 |
if (windowIDs[0] & ICON_ONLY) activeContext |= F_CONTEXT_ICON;
|
|
Packit |
b099d7 |
if (windowIDs[0] & WINDOW_ONLY) activeContext |= F_CONTEXT_WINDOW;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
pNext = tPtr->next;
|
|
Packit |
b099d7 |
tPtr->next = NULL;
|
|
Packit |
b099d7 |
ModifyClientCommandTree (ACTIVE_PSD, NULL, ALL, tPtr,
|
|
Packit |
b099d7 |
DISABLE, activeContext, NULL);
|
|
Packit |
b099d7 |
tPtr->next = pNext;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
PRINT("Disabled commandID %d on all windows.\n", commandID);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
PRINT("ERROR - commandID %d not found in command tree.\n", commandID);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Disable on specified clients
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
tPtr = FindCmd (commandID, CCI_TREE(w));
|
|
Packit |
b099d7 |
if (tPtr != NULL)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
for (i=0; i
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
ClientData *pCD;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
activeContext = 0L;
|
|
Packit |
b099d7 |
if (windowIDs[i] & ICON_ONLY)
|
|
Packit |
b099d7 |
activeContext |= F_CONTEXT_ICON;
|
|
Packit |
b099d7 |
if (windowIDs[i] & WINDOW_ONLY)
|
|
Packit |
b099d7 |
activeContext |= F_CONTEXT_WINDOW;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
pCD = GetPCD(ScrNum(w), windowIDs[i] & WINDOW_MASK);
|
|
Packit |
b099d7 |
if (pCD != NULL)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
pNext = tPtr->next;
|
|
Packit |
b099d7 |
tPtr->next = NULL;
|
|
Packit |
b099d7 |
ModifyClientCommandTree (pCD->pSD, pCD, SINGLE, tPtr,
|
|
Packit |
b099d7 |
DISABLE, activeContext, NULL);
|
|
Packit |
b099d7 |
tPtr->next = pNext;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
PRINT("ERROR - commandID %d not found in command tree.\n", commandID);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (count > 0)
|
|
Packit |
b099d7 |
XtFree((char*)windowIDs);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*----------------------------------------------------------------------*
|
|
Packit |
b099d7 |
| RenameCommand |
|
|
Packit |
b099d7 |
*----------------------------------------------------------------------*/
|
|
Packit |
b099d7 |
/*ARGSUSED*/
|
|
Packit |
b099d7 |
void
|
|
Packit |
b099d7 |
RenameCommand (
|
|
Packit |
b099d7 |
Widget w,
|
|
Packit |
b099d7 |
Atom target,
|
|
Packit |
b099d7 |
MessageData data,
|
|
Packit |
b099d7 |
unsigned long len,
|
|
Packit |
b099d7 |
int fmt)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
CARD32 commandID, count;
|
|
Packit |
b099d7 |
Window *windowIDs;
|
|
Packit |
b099d7 |
CmdTree *tPtr, *pNext;
|
|
Packit |
b099d7 |
int i, win;
|
|
Packit |
b099d7 |
unsigned long activeContext = 0L;
|
|
Packit |
b099d7 |
String newname;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* check data to make sure somethings there.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
if ((data == NULL) || (len == 0))
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
PRINT("Bad data passed to RenameCommand.\n");
|
|
Packit |
b099d7 |
return;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
commandID = UnpackCARD32(&data);
|
|
Packit |
b099d7 |
newname = UnpackString(&data);
|
|
Packit |
b099d7 |
count = UnpackCARD32(&data);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (count > 0) windowIDs = (Window *) XtMalloc(sizeof(Window)*count);
|
|
Packit |
b099d7 |
for (win=0; win
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
windowIDs[win] = UnpackCARD32(&data);
|
|
Packit |
b099d7 |
PRINT("Got window ID %d.\n", windowIDs[win]);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Rename on root menu
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
if ((windowIDs[0] & WINDOW_MASK) == 0L)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
tPtr = FindCmd (commandID, CCI_TREE(w));
|
|
Packit |
b099d7 |
if (tPtr != NULL)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
for (i=0; i
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
activeContext = F_CONTEXT_ROOT;
|
|
Packit |
b099d7 |
pNext = tPtr->next;
|
|
Packit |
b099d7 |
tPtr->next = NULL;
|
|
Packit |
b099d7 |
ModifyClientCommandTree (ACTIVE_PSD, NULL, ROOT, tPtr,
|
|
Packit |
b099d7 |
RENAME, activeContext, newname);
|
|
Packit |
b099d7 |
tPtr->next = pNext;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
PRINT("ERROR - commandID %d not found in command tree.\n", commandID);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Rename on all clients
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
else if ((windowIDs[0] & WINDOW_MASK) == ALL_WINDOWS)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
tPtr = FindCmd (commandID, CCI_TREE(w));
|
|
Packit |
b099d7 |
if (tPtr != NULL)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
activeContext = 0L;
|
|
Packit |
b099d7 |
if (windowIDs[0] & ICON_ONLY) activeContext |= F_CONTEXT_ICON;
|
|
Packit |
b099d7 |
if (windowIDs[0] & WINDOW_ONLY) activeContext |= F_CONTEXT_WINDOW;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
pNext = tPtr->next;
|
|
Packit |
b099d7 |
tPtr->next = NULL;
|
|
Packit |
b099d7 |
ModifyClientCommandTree (ACTIVE_PSD, NULL, ALL, tPtr,
|
|
Packit |
b099d7 |
RENAME, activeContext, newname);
|
|
Packit |
b099d7 |
tPtr->next = pNext;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
PRINT("Renamed commandID %d on all windows.\n", commandID);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
PRINT("ERROR - commandID %d not found in command tree.\n", commandID);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Rename on specified clients
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
tPtr = FindCmd (commandID, CCI_TREE(w));
|
|
Packit |
b099d7 |
if (tPtr != NULL)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
for (i=0; i
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
ClientData *pCD;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
activeContext = 0L;
|
|
Packit |
b099d7 |
if (windowIDs[i] & ICON_ONLY)
|
|
Packit |
b099d7 |
activeContext |= F_CONTEXT_ICON;
|
|
Packit |
b099d7 |
if (windowIDs[i] & WINDOW_ONLY)
|
|
Packit |
b099d7 |
activeContext |= F_CONTEXT_WINDOW;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
pCD = GetPCD(ScrNum(w), windowIDs[i] & WINDOW_MASK);
|
|
Packit |
b099d7 |
if (pCD != NULL)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
pNext = tPtr->next;
|
|
Packit |
b099d7 |
tPtr->next = NULL;
|
|
Packit |
b099d7 |
ModifyClientCommandTree (pCD->pSD, pCD, SINGLE, tPtr,
|
|
Packit |
b099d7 |
RENAME, activeContext, newname);
|
|
Packit |
b099d7 |
tPtr->next = pNext;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
PRINT("ERROR - commandID %d not found in command tree.\n", commandID);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (count > 0)
|
|
Packit |
b099d7 |
XtFree((char*)windowIDs);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*----------------------------------------------------------------------*
|
|
Packit |
b099d7 |
| RemoveCommand |
|
|
Packit |
b099d7 |
*----------------------------------------------------------------------*/
|
|
Packit |
b099d7 |
/*ARGSUSED*/
|
|
Packit |
b099d7 |
void
|
|
Packit |
b099d7 |
RemoveCommand (
|
|
Packit |
b099d7 |
Widget w,
|
|
Packit |
b099d7 |
Atom target,
|
|
Packit |
b099d7 |
MessageData data,
|
|
Packit |
b099d7 |
unsigned long len,
|
|
Packit |
b099d7 |
int fmt)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
CARD32 commandID, count;
|
|
Packit |
b099d7 |
Window *windowIDs;
|
|
Packit |
b099d7 |
CmdTree *tPtr, *pNext;
|
|
Packit |
b099d7 |
int i, win;
|
|
Packit |
b099d7 |
unsigned long activeContext = 0L;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* check data to make sure somethings there.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
if ((data == NULL) || (len == 0))
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
PRINT("Bad data passed to RemoveCommand.\n");
|
|
Packit |
b099d7 |
return;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
commandID = UnpackCARD32(&data);
|
|
Packit |
b099d7 |
count = UnpackCARD32(&data);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (count > 0) windowIDs = (Window *) XtMalloc(sizeof(Window)*count);
|
|
Packit |
b099d7 |
for (win=0; win
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
windowIDs[win] = UnpackCARD32(&data);
|
|
Packit |
b099d7 |
PRINT("Got window ID %d.\n", windowIDs[win]);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Remove on root menu
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
if ((windowIDs[0] & WINDOW_MASK) == 0L)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
tPtr = FindCmd (commandID, CCI_TREE(w));
|
|
Packit |
b099d7 |
if (tPtr != NULL)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
for (i=0; i
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
activeContext = F_CONTEXT_ROOT;
|
|
Packit |
b099d7 |
pNext = tPtr->next;
|
|
Packit |
b099d7 |
tPtr->next = NULL;
|
|
Packit |
b099d7 |
ModifyClientCommandTree (ACTIVE_PSD, NULL, ROOT, tPtr,
|
|
Packit |
b099d7 |
REMOVE, activeContext, NULL);
|
|
Packit |
b099d7 |
tPtr->next = pNext;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
PRINT("ERROR - commandID %d not found in command tree.\n", commandID);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Remove on all clients
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
else if ((windowIDs[0] & WINDOW_MASK) == ALL_WINDOWS)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
tPtr = FindCmd (commandID, CCI_TREE(w));
|
|
Packit |
b099d7 |
if (tPtr != NULL)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
activeContext = 0L;
|
|
Packit |
b099d7 |
if (windowIDs[0] & ICON_ONLY) activeContext |= F_CONTEXT_ICON;
|
|
Packit |
b099d7 |
if (windowIDs[0] & WINDOW_ONLY) activeContext |= F_CONTEXT_WINDOW;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
pNext = tPtr->next;
|
|
Packit |
b099d7 |
tPtr->next = NULL;
|
|
Packit |
b099d7 |
ModifyClientCommandTree (ACTIVE_PSD, NULL, ALL, tPtr, REMOVE,
|
|
Packit |
b099d7 |
activeContext, NULL);
|
|
Packit |
b099d7 |
tPtr->next = pNext;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
PRINT("Removed commandID %d on all windows.\n", commandID);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
PRINT("ERROR - commandID %d not found in command tree.\n", commandID);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Remove on specified clients
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
tPtr = FindCmd (commandID, CCI_TREE(w));
|
|
Packit |
b099d7 |
if (tPtr != NULL)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
for (i=0; i
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
ClientData *pCD;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
activeContext = 0L;
|
|
Packit |
b099d7 |
if (windowIDs[i] & ICON_ONLY)
|
|
Packit |
b099d7 |
activeContext |= F_CONTEXT_ICON;
|
|
Packit |
b099d7 |
if (windowIDs[i] & WINDOW_ONLY)
|
|
Packit |
b099d7 |
activeContext |= F_CONTEXT_WINDOW;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
pCD = GetPCD(ScrNum(w), windowIDs[i] & WINDOW_MASK);
|
|
Packit |
b099d7 |
if (pCD != NULL)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
pNext = tPtr->next;
|
|
Packit |
b099d7 |
tPtr->next = NULL;
|
|
Packit |
b099d7 |
ModifyClientCommandTree (pCD->pSD, pCD, SINGLE, tPtr,
|
|
Packit |
b099d7 |
REMOVE, activeContext, NULL);
|
|
Packit |
b099d7 |
tPtr->next = pNext;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
PRINT("ERROR - commandID %d not found in command tree.\n", commandID);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (count > 0)
|
|
Packit |
b099d7 |
XtFree((char*)windowIDs);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*---------------------------------------------------------------------------*
|
|
Packit |
b099d7 |
| RemoveMatchingCommands |
|
|
Packit |
b099d7 |
| Recursively removes commands that match a given window in the specified |
|
|
Packit |
b099d7 |
| command tree. |
|
|
Packit |
b099d7 |
*---------------------------------------------------------------------------*/
|
|
Packit |
b099d7 |
/*ARGSUSED*/
|
|
Packit |
b099d7 |
void
|
|
Packit |
b099d7 |
RemoveMatchingCommands (
|
|
Packit |
b099d7 |
int scr,
|
|
Packit |
b099d7 |
Window clientWindow,
|
|
Packit |
b099d7 |
CmdTree *tree)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if (tree == NULL)
|
|
Packit |
b099d7 |
return;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (tree->subTrees != NULL)
|
|
Packit |
b099d7 |
RemoveMatchingCommands(scr, clientWindow, tree->subTrees);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (tree->notifyWindow == clientWindow)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
cmdKillList[ cmdKillListIndex++ ] = tree->commandID;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (tree->next != NULL)
|
|
Packit |
b099d7 |
RemoveMatchingCommands(scr, clientWindow, tree->next);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*---------------------------------------------------------------------------*
|
|
Packit |
b099d7 |
| RemoveCommandsForClient |
|
|
Packit |
b099d7 |
| This function will remove any command that was inserted by this client. |
|
|
Packit |
b099d7 |
*---------------------------------------------------------------------------*/
|
|
Packit |
b099d7 |
void
|
|
Packit |
b099d7 |
RemoveCommandsForClient (
|
|
Packit |
b099d7 |
int scr,
|
|
Packit |
b099d7 |
Window clientWindow)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
int i;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
ShowWaitState (TRUE);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
cmdKillListIndex = 0;
|
|
Packit |
b099d7 |
RemoveMatchingCommands(scr, clientWindow, CCI_TREE_OF_SCR(scr));
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Remove any matching commands on the root menu.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
for (i = 0; i < cmdKillListIndex; i++)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
CmdTree *tPtr, *pNext;
|
|
Packit |
b099d7 |
MenuSpec *pMS;
|
|
Packit |
b099d7 |
WmScreenData *pSD = ACTIVE_PSD;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
while (tPtr = FindCmd (cmdKillList[ i ], CCI_TREE_OF_SCR(scr)))
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
/* make sure ModifyClientCommandTree can't muck with cmdTree. */
|
|
Packit |
b099d7 |
pNext = tPtr->next;
|
|
Packit |
b099d7 |
tPtr->next = NULL;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
ModifyClientCommandTree (pSD, NULL, ALL, tPtr,
|
|
Packit |
b099d7 |
REMOVE, F_CONTEXT_ALL, NULL);
|
|
Packit |
b099d7 |
/* restore tree. */
|
|
Packit |
b099d7 |
tPtr->next = pNext;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* if this command caused a menu spec to be created, remove it.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
DestroyMenuSpec(pSD, cmdKillList[i]);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Now delete the matching entry in the command tree.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
DeleteCommand(cmdKillList[ i ], &CCI_TREE_OF_SCR(scr));
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
ShowWaitState (FALSE);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*---------------------------------------------------------------------------*
|
|
Packit |
b099d7 |
| InvokeMessageReply |
|
|
Packit |
b099d7 |
*---------------------------------------------------------------------------*/
|
|
Packit |
b099d7 |
/*ARGSUSED*/
|
|
Packit |
b099d7 |
void
|
|
Packit |
b099d7 |
InvokeMessageReply (Widget w, XtPointer clientData, XtPointer callData)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
PRINT("Invoke message reply received.\n");
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*---------------------------------------------------------------------------*
|
|
Packit |
b099d7 |
| SendInvokeMessage |
|
|
Packit |
b099d7 |
| Send a convert request to the client that owns the menu command. |
|
|
Packit |
b099d7 |
*---------------------------------------------------------------------------*/
|
|
Packit |
b099d7 |
void
|
|
Packit |
b099d7 |
SendInvokeMessage (
|
|
Packit |
b099d7 |
CARD32 commandID,
|
|
Packit |
b099d7 |
CARD32 clientWindow,
|
|
Packit |
b099d7 |
Atom selection,
|
|
Packit |
b099d7 |
Time time)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
MessageData msg, fulldata;
|
|
Packit |
b099d7 |
unsigned long size;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
size = (unsigned long)(sizeof(CARD32) + sizeof(CARD32));
|
|
Packit |
b099d7 |
msg = fulldata = (MessageData)XtMalloc(sizeof(CARD8) * size);
|
|
Packit |
b099d7 |
msg = PackCARD32(msg, commandID);
|
|
Packit |
b099d7 |
msg = PackCARD32(msg, clientWindow);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
UTMSendMessage(ACTIVE_PSD->utmShell,
|
|
Packit |
b099d7 |
selection,
|
|
Packit |
b099d7 |
wmGD._MOTIF_WM_INVOKE_COMMAND,
|
|
Packit |
b099d7 |
(XtPointer)fulldata, size, WSM_PROTO_FMT,
|
|
Packit |
b099d7 |
InvokeMessageReply, NULL, /* no client data */
|
|
Packit |
b099d7 |
time);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*----------------------------------------------------------------------*
|
|
Packit |
b099d7 |
| CopyMwmGadget
|
|
Packit |
b099d7 |
*----------------------------------------------------------------------*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
CopyMwmGadget(GadgetRectangle *mwm_gadget, GadgetRectangle *auto_gadget)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
auto_gadget->id = mwm_gadget->id;
|
|
Packit |
b099d7 |
auto_gadget->rect.x = mwm_gadget->rect.x;
|
|
Packit |
b099d7 |
auto_gadget->rect.y = mwm_gadget->rect.y;
|
|
Packit |
b099d7 |
auto_gadget->rect.width = mwm_gadget->rect.width;
|
|
Packit |
b099d7 |
auto_gadget->rect.height = mwm_gadget->rect.height;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*----------------------------------------------------------------------*
|
|
Packit |
b099d7 |
| FillInvalidInfo
|
|
Packit |
b099d7 |
*----------------------------------------------------------------------*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
FillInvalidInfo(GadgetRectangle *auto_gadget)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
auto_gadget->id = INVALID;
|
|
Packit |
b099d7 |
auto_gadget->rect.x = auto_gadget->rect.y = auto_gadget->rect.width =
|
|
Packit |
b099d7 |
auto_gadget->rect.height = INVALID;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*----------------------------------------------------------------------*
|
|
Packit |
b099d7 |
| GetMinimizeInfo
|
|
Packit |
b099d7 |
*----------------------------------------------------------------------*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
GetMinimizeInfo(ClientData *pcd, XtPointer reply)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* This function packs data about the minimize button in the following
|
|
Packit |
b099d7 |
* order : 1. gadget count 2. id 3. x position 4. y position 5. width
|
|
Packit |
b099d7 |
* 6. height
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
GadgetRectangle minimize_button;
|
|
Packit |
b099d7 |
CARD32 filledCount;
|
|
Packit |
b099d7 |
int i;
|
|
Packit |
b099d7 |
Window frameWin;
|
|
Packit |
b099d7 |
Boolean minFound = False;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
filledCount = pcd->cTitleGadgets;
|
|
Packit |
b099d7 |
frameWin = pcd->clientFrameWin;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
for (i=0; i < filledCount; i++)
|
|
Packit |
b099d7 |
if (pcd->pTitleGadgets[i].id == FRAME_MINIMIZE)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
CopyMwmGadget (&(pcd->pTitleGadgets[i]), &minimize_button);
|
|
Packit |
b099d7 |
minFound = True;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (minFound == False)
|
|
Packit |
b099d7 |
FillInvalidInfo (&minimize_button);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)filledCount);
|
|
Packit |
b099d7 |
reply = PackCARD32(reply, (CARD32)minimize_button.id);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)minimize_button.rect.x);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)minimize_button.rect.y);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)minimize_button.rect.width);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)minimize_button.rect.height);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)frameWin);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*----------------------------------------------------------------------*
|
|
Packit |
b099d7 |
| GetMaximizeInfo
|
|
Packit |
b099d7 |
*----------------------------------------------------------------------*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
GetMaximizeInfo(ClientData *pcd, XtPointer reply)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* This function packs data about the maximize button in the following
|
|
Packit |
b099d7 |
* order : 1. gadget count 2. id 3. x position 4. y position 5. width
|
|
Packit |
b099d7 |
* 6. height 7. event window
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
int i;
|
|
Packit |
b099d7 |
GadgetRectangle maximize_button;
|
|
Packit |
b099d7 |
CARD32 filledCount;
|
|
Packit |
b099d7 |
Window frameWin;
|
|
Packit |
b099d7 |
Boolean maxFound = False;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
filledCount = pcd->cTitleGadgets;
|
|
Packit |
b099d7 |
frameWin = pcd->clientFrameWin;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
for (i=0; i < filledCount; i++)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (pcd->pTitleGadgets[i].id == FRAME_MAXIMIZE)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
CopyMwmGadget (&(pcd->pTitleGadgets[i]),&maximize_button);
|
|
Packit |
b099d7 |
maxFound = True;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (maxFound == False)
|
|
Packit |
b099d7 |
FillInvalidInfo (&maximize_button);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)filledCount);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)maximize_button.id);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)maximize_button.rect.x);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)maximize_button.rect.y);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)maximize_button.rect.width);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)maximize_button.rect.height);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)frameWin);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*----------------------------------------------------------------------*
|
|
Packit |
b099d7 |
| GetIconInfo
|
|
Packit |
b099d7 |
*----------------------------------------------------------------------*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
GetIconInfo(ClientData *pcd, XtPointer reply, Boolean use_icon_box)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
IconBoxData *icon_box;
|
|
Packit |
b099d7 |
XmScrollBarWidget hScrollBar, vScrollBar;
|
|
Packit |
b099d7 |
Widget frameWidget, scrollWidget, shellWidget;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
CARD32 iconX, iconY, iconWidth, iconHeight ;
|
|
Packit |
b099d7 |
CARD32 hMin, hMax, hSliderAreaWidth, hSliderX, hSliderAreaX,
|
|
Packit |
b099d7 |
vMin, vMax, vSliderAreaHeight, vSliderY, vSliderAreaY;
|
|
Packit |
b099d7 |
CARD32 rightArrowX, rightArrowY, leftArrowX, leftArrowY,
|
|
Packit |
b099d7 |
topArrowX, topArrowY, bottomArrowX, bottomArrowY;
|
|
Packit |
b099d7 |
CARD32 iconBoxX, iconBoxY, iconBoxWidth, iconBoxHeight;
|
|
Packit |
b099d7 |
Window frameWin, scrollWin, hScrollWin, vScrollWin, iconShellWin, iconFrameWin;
|
|
Packit |
b099d7 |
CARD32 lastRow, lastCol;
|
|
Packit |
b099d7 |
CARD32 iPlaceW, iPlaceH;
|
|
Packit |
b099d7 |
CARD32 useIconBox;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
icon_box = pcd->pIconBox;
|
|
Packit |
b099d7 |
useIconBox = pcd->pSD->useIconBox;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* IconBox info
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
if (use_icon_box == True)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
hScrollBar = (XmScrollBarWidget)icon_box->hScrollBar;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
hMin = hScrollBar->scrollBar.minimum;
|
|
Packit |
b099d7 |
hMax = hScrollBar->scrollBar.maximum;
|
|
Packit |
b099d7 |
hSliderAreaWidth = hScrollBar->scrollBar.slider_area_width;
|
|
Packit |
b099d7 |
hSliderX = hScrollBar->scrollBar.slider_x;
|
|
Packit |
b099d7 |
hSliderAreaX = hScrollBar->scrollBar.slider_area_x;
|
|
Packit |
b099d7 |
leftArrowX = hScrollBar->core.x +
|
|
Packit |
b099d7 |
hScrollBar->scrollBar.arrow1_x +
|
|
Packit |
b099d7 |
(hScrollBar->scrollBar.arrow_width/2);
|
|
Packit |
b099d7 |
leftArrowY = hScrollBar->core.y +
|
|
Packit |
b099d7 |
hScrollBar->scrollBar.arrow1_y +
|
|
Packit |
b099d7 |
(hScrollBar->scrollBar.arrow_height/2);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
rightArrowX = hScrollBar->core.x + hScrollBar->scrollBar.arrow2_x
|
|
Packit |
b099d7 |
+ (hScrollBar->scrollBar.arrow_width/2);
|
|
Packit |
b099d7 |
rightArrowY = hScrollBar->core.y + hScrollBar->scrollBar.arrow2_y
|
|
Packit |
b099d7 |
+ (hScrollBar->scrollBar.arrow_height/2);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
vScrollBar = (XmScrollBarWidget)icon_box->vScrollBar;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
vMin = vScrollBar->scrollBar.minimum;
|
|
Packit |
b099d7 |
vMax = vScrollBar->scrollBar.maximum;
|
|
Packit |
b099d7 |
vSliderAreaHeight = vScrollBar->scrollBar.slider_area_height;
|
|
Packit |
b099d7 |
vSliderY = vScrollBar->scrollBar.slider_y;
|
|
Packit |
b099d7 |
vSliderAreaY = vScrollBar->scrollBar.slider_area_y;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
topArrowX = vScrollBar->core.x + vScrollBar->scrollBar.arrow1_x
|
|
Packit |
b099d7 |
+ (vScrollBar->scrollBar.arrow_width/2);
|
|
Packit |
b099d7 |
topArrowY = vScrollBar->core.y + vScrollBar->scrollBar.arrow1_y
|
|
Packit |
b099d7 |
+ (vScrollBar->scrollBar.arrow_height/2);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
bottomArrowX = vScrollBar->core.x + vScrollBar->scrollBar.arrow2_x
|
|
Packit |
b099d7 |
+ (vScrollBar->scrollBar.arrow_width/2);
|
|
Packit |
b099d7 |
bottomArrowY = hScrollBar->core.y + hScrollBar->scrollBar.arrow2_y
|
|
Packit |
b099d7 |
+ (hScrollBar->scrollBar.arrow_height/2);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
shellWidget = icon_box->shellWidget;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
iconBoxX = shellWidget->core.x;
|
|
Packit |
b099d7 |
iconBoxY = shellWidget->core.y;
|
|
Packit |
b099d7 |
iconBoxWidth = shellWidget->core.width;
|
|
Packit |
b099d7 |
iconBoxHeight = shellWidget->core.height;
|
|
Packit |
b099d7 |
iconShellWin = XtWindow (shellWidget);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
frameWidget = icon_box->frameWidget;
|
|
Packit |
b099d7 |
frameWin = XtWindow (frameWidget);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
scrollWidget = icon_box->scrolledWidget;
|
|
Packit |
b099d7 |
scrollWin = XtWindow (scrollWidget);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
hScrollWin = XtWindow (hScrollBar);
|
|
Packit |
b099d7 |
vScrollWin = XtWindow (vScrollBar);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
lastCol = icon_box->lastCol;
|
|
Packit |
b099d7 |
lastRow = icon_box->lastRow;
|
|
Packit |
b099d7 |
iPlaceW = icon_box->IPD.iPlaceW;
|
|
Packit |
b099d7 |
iPlaceH = icon_box->IPD.iPlaceH;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* icon info
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
iconX = pcd->iconX;
|
|
Packit |
b099d7 |
iconY = pcd->iconY;
|
|
Packit |
b099d7 |
iconWidth = pcd->pSD->iconWidth;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
iconHeight = pcd->pSD->iconHeight;
|
|
Packit |
b099d7 |
iconFrameWin = pcd->iconFrameWin;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)useIconBox);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)iconX);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)iconY);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)iconWidth);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)iconHeight);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)iconFrameWin);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (use_icon_box == True)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)hMin);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)hMax);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)hSliderAreaWidth);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)hSliderX);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)hSliderAreaX);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)vMin);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)vMax);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)vSliderAreaHeight);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)vSliderY);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)vSliderAreaY);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)rightArrowX);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)rightArrowY);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)leftArrowX);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)leftArrowY);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)topArrowX);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)topArrowY);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)bottomArrowX);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)bottomArrowY);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)iconBoxX);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)iconBoxY);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)iconBoxWidth);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)iconBoxHeight);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)iconShellWin);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)frameWin);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)scrollWin);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)hScrollWin);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)vScrollWin);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)lastCol);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)lastRow);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)iPlaceH);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)iPlaceW);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*----------------------------------------------------------------------*
|
|
Packit |
b099d7 |
| GetMoveInfo
|
|
Packit |
b099d7 |
*----------------------------------------------------------------------*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
GetMoveInfo(ClientData *pcd, XtPointer reply)
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
int i;
|
|
Packit |
b099d7 |
GadgetRectangle title;
|
|
Packit |
b099d7 |
GadgetRectangle menu;
|
|
Packit |
b099d7 |
CARD32 filledCount;
|
|
Packit |
b099d7 |
CARD32 upperBorderWidth, lowerBorderWidth;
|
|
Packit |
b099d7 |
CARD32 windowX, windowY;
|
|
Packit |
b099d7 |
Window frameWin;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
Boolean titleFound = False;
|
|
Packit |
b099d7 |
Boolean system_found = False;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
filledCount = pcd->cTitleGadgets;
|
|
Packit |
b099d7 |
upperBorderWidth = pcd->frameInfo.upperBorderWidth;
|
|
Packit |
b099d7 |
lowerBorderWidth = pcd->frameInfo.lowerBorderWidth;
|
|
Packit |
b099d7 |
windowX = pcd->clientX;
|
|
Packit |
b099d7 |
windowY = pcd->clientY;
|
|
Packit |
b099d7 |
frameWin = pcd->clientFrameWin;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
for (i=0; i < filledCount; i++)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if (pcd->pTitleGadgets[i].id == FRAME_TITLE)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
CopyMwmGadget (&(pcd->pTitleGadgets[i]), &title);
|
|
Packit |
b099d7 |
titleFound = True;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (pcd->pTitleGadgets[i].id == FRAME_SYSTEM)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
CopyMwmGadget (&(pcd->pTitleGadgets[i]), &menu);
|
|
Packit |
b099d7 |
system_found = True;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (titleFound == False)
|
|
Packit |
b099d7 |
FillInvalidInfo (&title);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (system_found == False)
|
|
Packit |
b099d7 |
FillInvalidInfo (&menu);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)filledCount);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)title.id);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)title.rect.x);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)title.rect.y);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)title.rect.width);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)title.rect.height);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)menu.id);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)menu.rect.x);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)menu.rect.y);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)menu.rect.width);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)menu.rect.height);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)upperBorderWidth);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)lowerBorderWidth);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)windowX);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)windowY);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)frameWin);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*----------------------------------------------------------------------*
|
|
Packit |
b099d7 |
| GetResizeInfo
|
|
Packit |
b099d7 |
*----------------------------------------------------------------------*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
GetResizeInfo(ClientData *pcd, XtPointer reply, int dir)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
int i;
|
|
Packit |
b099d7 |
GadgetRectangle east_resize, west_resize, gravity_resize, title;
|
|
Packit |
b099d7 |
CARD32 upperBorderWidth, lowerBorderWidth;
|
|
Packit |
b099d7 |
Window frameWin;
|
|
Packit |
b099d7 |
int filledCount;
|
|
Packit |
b099d7 |
Boolean titleFound = False;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
filledCount = pcd->cTitleGadgets;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (!(pcd->decor & MWM_DECOR_RESIZEH))
|
|
Packit |
b099d7 |
FillInvalidInfo (&gravity_resize);
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
CopyMwmGadget (&pcd->pResizeGadgets[dir], &gravity_resize);
|
|
Packit |
b099d7 |
CopyMwmGadget (&pcd->pResizeGadgets[WM_WEST], &west_resize);
|
|
Packit |
b099d7 |
CopyMwmGadget (&pcd->pResizeGadgets[WM_EAST], &east_resize);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
for (i=0; i < filledCount; i++)
|
|
Packit |
b099d7 |
if (pcd->pTitleGadgets[i].id == FRAME_TITLE)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
CopyMwmGadget (&(pcd->pTitleGadgets[i]), &title);
|
|
Packit |
b099d7 |
titleFound = True;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (titleFound == False)
|
|
Packit |
b099d7 |
FillInvalidInfo (&title);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
upperBorderWidth = pcd->frameInfo.upperBorderWidth;
|
|
Packit |
b099d7 |
lowerBorderWidth = pcd->frameInfo.lowerBorderWidth;
|
|
Packit |
b099d7 |
frameWin = pcd->clientFrameWin;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)east_resize.id);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)east_resize.rect.width);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)west_resize.id);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)west_resize.rect.width);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)gravity_resize.id);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)gravity_resize.rect.x);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)gravity_resize.rect.y);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)gravity_resize.rect.width);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)gravity_resize.rect.height);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)title.id);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)title.rect.x);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)title.rect.y);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)title.rect.width);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)title.rect.height);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)upperBorderWidth);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)lowerBorderWidth);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)frameWin);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*----------------------------------------------------------------------*
|
|
Packit |
b099d7 |
| GetWindowMenuUnpostInfo
|
|
Packit |
b099d7 |
*----------------------------------------------------------------------*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
GetWindowMenuUnpostInfo(ClientData *pcd, XtPointer reply)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
MenuSpec *menuSpec;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
CARD32 clientState;
|
|
Packit |
b099d7 |
CARD32 menuWin;
|
|
Packit |
b099d7 |
CARD32 frameWin;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
menuSpec = pcd->systemMenuSpec;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
clientState = pcd->clientState;
|
|
Packit |
b099d7 |
menuWin = XtWindow (menuSpec->menuWidget);
|
|
Packit |
b099d7 |
frameWin = pcd->clientFrameWin;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,clientState);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,menuWin);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,frameWin);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*----------------------------------------------------------------------*
|
|
Packit |
b099d7 |
| GetFocusInfo
|
|
Packit |
b099d7 |
*----------------------------------------------------------------------*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
GetFocusInfo(ClientData *pcd, XtPointer reply)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
GadgetRectangle title;
|
|
Packit |
b099d7 |
CARD32 filledCount;
|
|
Packit |
b099d7 |
int i;
|
|
Packit |
b099d7 |
Window frameWin;
|
|
Packit |
b099d7 |
Boolean titleFound = False;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
filledCount = pcd->cTitleGadgets;
|
|
Packit |
b099d7 |
frameWin = pcd->clientFrameWin;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
for (i=0; i < filledCount; i++)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if (pcd->pTitleGadgets[i].id == FRAME_TITLE)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
CopyMwmGadget (&(pcd->pTitleGadgets[i]), &title);
|
|
Packit |
b099d7 |
titleFound = True;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (titleFound == False)
|
|
Packit |
b099d7 |
FillInvalidInfo (&title);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)filledCount);
|
|
Packit |
b099d7 |
reply = PackCARD32(reply, (CARD32)title.id);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)title.rect.x);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)title.rect.y);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)title.rect.width);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)title.rect.height);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)frameWin);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*----------------------------------------------------------------------*
|
|
Packit |
b099d7 |
| GetWindowMenuPostInfo
|
|
Packit |
b099d7 |
*----------------------------------------------------------------------*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
GetWindowMenuPostInfo(ClientData *pcd, XtPointer reply)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
int i;
|
|
Packit |
b099d7 |
GadgetRectangle title;
|
|
Packit |
b099d7 |
GadgetRectangle menu;
|
|
Packit |
b099d7 |
CARD32 filledCount;
|
|
Packit |
b099d7 |
Window frameWin;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
Boolean titleFound = False;
|
|
Packit |
b099d7 |
Boolean systemFound = False;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
filledCount = pcd->cTitleGadgets;
|
|
Packit |
b099d7 |
frameWin = pcd->clientFrameWin;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
for (i=0; i < filledCount; i++)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if (pcd->pTitleGadgets[i].id == FRAME_TITLE)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
CopyMwmGadget (&(pcd->pTitleGadgets[i]), &title);
|
|
Packit |
b099d7 |
titleFound = True;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (pcd->pTitleGadgets[i].id == FRAME_SYSTEM)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
CopyMwmGadget (&(pcd->pTitleGadgets[i]), &menu);
|
|
Packit |
b099d7 |
systemFound = True;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (titleFound == False)
|
|
Packit |
b099d7 |
FillInvalidInfo (&title);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (systemFound == False)
|
|
Packit |
b099d7 |
FillInvalidInfo (&menu);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)filledCount);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)title.id);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)title.rect.x);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)title.rect.y);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)title.rect.width);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)title.rect.height);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)menu.id);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)menu.rect.x);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)menu.rect.y);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)menu.rect.width);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)menu.rect.height);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)frameWin);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*----------------------------------------------------------------------*
|
|
Packit |
b099d7 |
| GetIconMenuItemSelectInfo
|
|
Packit |
b099d7 |
*----------------------------------------------------------------------*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
GetIconMenuItemSelectInfo(ClientData *pcd, XtPointer reply, Boolean use_icon_box)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
MenuSpec *menuSpec;
|
|
Packit |
b099d7 |
int menuItemCount,sensitiveCount;
|
|
Packit |
b099d7 |
Window menuWin, frameWin;
|
|
Packit |
b099d7 |
int sensitive[MAX_MENU_ITEMS];
|
|
Packit |
b099d7 |
int itemY[MAX_MENU_ITEMS];
|
|
Packit |
b099d7 |
char itemName[MAX_MENU_ITEMS][25];
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
IconBoxData *icon_box;
|
|
Packit |
b099d7 |
XmScrollBarWidget hScrollBar, vScrollBar;
|
|
Packit |
b099d7 |
Widget frameWidget, scrollWidget, shellWidget;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
MenuButton *NewMenuButton;
|
|
Packit |
b099d7 |
MenuItem *NewMenuItem;
|
|
Packit |
b099d7 |
int n;
|
|
Packit |
b099d7 |
CARD32 iconX, iconY, iconWidth, iconHeight;
|
|
Packit |
b099d7 |
CARD32 hMin, hMax, hSliderAreaWidth, hSliderX, hSliderAreaX,
|
|
Packit |
b099d7 |
vMin, vMax, vSliderAreaHeight, vSliderY, vSliderAreaY;
|
|
Packit |
b099d7 |
CARD32 rightArrowX, rightArrowY, leftArrowX, leftArrowY,
|
|
Packit |
b099d7 |
topArrowX, topArrowY, bottomArrowX, bottomArrowY;
|
|
Packit |
b099d7 |
CARD32 iconBoxX, iconBoxY, iconBoxWidth, iconBoxHeight;
|
|
Packit |
b099d7 |
Window scrollWin, hScrollWin, vScrollWin, iconShellWin, iconFrameWin;
|
|
Packit |
b099d7 |
CARD32 lastRow, lastCol;
|
|
Packit |
b099d7 |
CARD32 iPlaceW, iPlaceH;
|
|
Packit |
b099d7 |
CARD32 clientState;
|
|
Packit |
b099d7 |
CARD32 useIconBox;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
useIconBox = pcd->pSD->useIconBox;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
icon_box = pcd->pIconBox;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
menuSpec = pcd->systemMenuSpec;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (menuSpec == NULL)
|
|
Packit |
b099d7 |
return;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
menuItemCount = menuSpec->menuButtonCount;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
for (n = 0; n < menuItemCount && n < MAX_MENU_ITEMS; n++)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
itemName[n][0] = '\0';
|
|
Packit |
b099d7 |
sensitive[n] = FALSE;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
menuWin = XtWindow (menuSpec->menuWidget);
|
|
Packit |
b099d7 |
frameWin = pcd->clientFrameWin;
|
|
Packit |
b099d7 |
clientState = pcd->clientState;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
sensitiveCount = 0;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
for (n = 0, NewMenuButton = menuSpec->menuButtons;
|
|
Packit |
b099d7 |
n < menuSpec->menuButtonCount;
|
|
Packit |
b099d7 |
n++, NewMenuButton++)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if (NewMenuButton->managed == FALSE)
|
|
Packit |
b099d7 |
continue;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
NewMenuItem = NewMenuButton->menuItem;
|
|
Packit |
b099d7 |
sensitive[n] = NewMenuButton->buttonWidget->core.sensitive;
|
|
Packit |
b099d7 |
itemY[n] = NewMenuButton->buttonWidget->core.y +
|
|
Packit |
b099d7 |
(NewMenuButton->buttonWidget->core.height / 2);
|
|
Packit |
b099d7 |
strcpy(itemName[n], NewMenuItem->label);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (sensitive[n] == TRUE)
|
|
Packit |
b099d7 |
sensitiveCount++;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (use_icon_box == True)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
hScrollBar = (XmScrollBarWidget)icon_box->hScrollBar;
|
|
Packit |
b099d7 |
hMin = hScrollBar->scrollBar.minimum;
|
|
Packit |
b099d7 |
hMax = hScrollBar->scrollBar.maximum;
|
|
Packit |
b099d7 |
hSliderAreaWidth = hScrollBar->scrollBar.slider_area_width;
|
|
Packit |
b099d7 |
hSliderX = hScrollBar->scrollBar.slider_x;
|
|
Packit |
b099d7 |
hSliderAreaX = hScrollBar->scrollBar.slider_area_x;
|
|
Packit |
b099d7 |
leftArrowX = hScrollBar->core.x +
|
|
Packit |
b099d7 |
hScrollBar->scrollBar.arrow1_x +
|
|
Packit |
b099d7 |
(hScrollBar->scrollBar.arrow_width/2);
|
|
Packit |
b099d7 |
leftArrowY = hScrollBar->core.y +
|
|
Packit |
b099d7 |
hScrollBar->scrollBar.arrow1_y +
|
|
Packit |
b099d7 |
(hScrollBar->scrollBar.arrow_height/2);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
rightArrowX = hScrollBar->core.x + hScrollBar->scrollBar.arrow2_x
|
|
Packit |
b099d7 |
+ (hScrollBar->scrollBar.arrow_width/2);
|
|
Packit |
b099d7 |
rightArrowY = hScrollBar->core.y + hScrollBar->scrollBar.arrow2_y
|
|
Packit |
b099d7 |
+ (hScrollBar->scrollBar.arrow_height/2);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
vScrollBar = (XmScrollBarWidget)icon_box->vScrollBar;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
vMin = vScrollBar->scrollBar.minimum;
|
|
Packit |
b099d7 |
vMax = vScrollBar->scrollBar.maximum;
|
|
Packit |
b099d7 |
vSliderAreaHeight = vScrollBar->scrollBar.slider_area_height;
|
|
Packit |
b099d7 |
vSliderY = vScrollBar->scrollBar.slider_y;
|
|
Packit |
b099d7 |
vSliderAreaY = vScrollBar->scrollBar.slider_area_y;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
topArrowX = vScrollBar->core.x + vScrollBar->scrollBar.arrow1_x
|
|
Packit |
b099d7 |
+ (vScrollBar->scrollBar.arrow_width/2);
|
|
Packit |
b099d7 |
topArrowY = vScrollBar->core.y + vScrollBar->scrollBar.arrow1_y
|
|
Packit |
b099d7 |
+ (vScrollBar->scrollBar.arrow_height/2);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
bottomArrowX = vScrollBar->core.x + vScrollBar->scrollBar.arrow2_x
|
|
Packit |
b099d7 |
+ (vScrollBar->scrollBar.arrow_width/2);
|
|
Packit |
b099d7 |
bottomArrowY = hScrollBar->core.y + hScrollBar->scrollBar.arrow2_y
|
|
Packit |
b099d7 |
+ (hScrollBar->scrollBar.arrow_height/2);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
shellWidget = icon_box->shellWidget;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
iconBoxX = shellWidget->core.x;
|
|
Packit |
b099d7 |
iconBoxY = shellWidget->core.y;
|
|
Packit |
b099d7 |
iconBoxWidth = shellWidget->core.width;
|
|
Packit |
b099d7 |
iconBoxHeight = shellWidget->core.height;
|
|
Packit |
b099d7 |
iconShellWin = XtWindow (shellWidget);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
frameWidget = icon_box->frameWidget;
|
|
Packit |
b099d7 |
frameWin = XtWindow (frameWidget);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
scrollWidget = icon_box->scrolledWidget;
|
|
Packit |
b099d7 |
scrollWin = XtWindow (scrollWidget);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
hScrollWin = XtWindow (hScrollBar);
|
|
Packit |
b099d7 |
vScrollWin = XtWindow (vScrollBar);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
lastCol = icon_box->lastCol;
|
|
Packit |
b099d7 |
lastRow = icon_box->lastRow;
|
|
Packit |
b099d7 |
iPlaceW = icon_box->IPD.iPlaceW;
|
|
Packit |
b099d7 |
iPlaceH = icon_box->IPD.iPlaceH;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* icon info
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
iconX = pcd->iconX;
|
|
Packit |
b099d7 |
iconY = pcd->iconY;
|
|
Packit |
b099d7 |
iconWidth = pcd->pSD->iconWidth;
|
|
Packit |
b099d7 |
iconHeight = pcd->pSD->iconHeight;
|
|
Packit |
b099d7 |
iconFrameWin = pcd->iconFrameWin;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)clientState);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)menuItemCount);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)sensitiveCount);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)menuWin);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)frameWin);
|
|
Packit |
b099d7 |
for (n=0; n < menuItemCount && n < MAX_MENU_ITEMS; n++)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)sensitive[n]);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)itemY[n]);
|
|
Packit |
b099d7 |
reply = PackString (reply, (String)itemName[n]);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)use_icon_box);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)iconX);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)iconY);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)iconWidth);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)iconHeight);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)iconFrameWin);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (use_icon_box == True)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)hMin);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)hMax);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)hSliderAreaWidth);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)hSliderX);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)hSliderAreaX);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)vMin);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)vMax);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)vSliderAreaHeight);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)vSliderY);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)vSliderAreaY);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)rightArrowX);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)rightArrowY);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)leftArrowX);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)leftArrowY);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)topArrowX);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)topArrowY);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)bottomArrowX);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)bottomArrowY);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)iconBoxX);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)iconBoxY);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)iconBoxWidth);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)iconBoxHeight);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)iconShellWin);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)frameWin);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)scrollWin);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)hScrollWin);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)vScrollWin);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)lastCol);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)lastRow);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)iPlaceH);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply,(CARD32)iPlaceW);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*----------------------------------------------------------------------*
|
|
Packit |
b099d7 |
| GetItemSelectInfo
|
|
Packit |
b099d7 |
*----------------------------------------------------------------------*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
GetWindowItemSelectInfo(ClientData *pcd, XtPointer reply)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
MenuSpec *menuSpec;
|
|
Packit |
b099d7 |
CARD32 menuItemCount,sensitiveCount;
|
|
Packit |
b099d7 |
Window menuWin, frameWin;
|
|
Packit |
b099d7 |
CARD32 sensitive[MAX_MENU_ITEMS];
|
|
Packit |
b099d7 |
CARD32 itemY[MAX_MENU_ITEMS];
|
|
Packit |
b099d7 |
char itemName[MAX_MENU_ITEMS][MAX_NAME_LEN + 1];
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
MenuButton *NewMenuButton;
|
|
Packit |
b099d7 |
MenuItem *NewMenuItem;
|
|
Packit |
b099d7 |
int n;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
menuSpec = pcd->systemMenuSpec;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (menuSpec == NULL)
|
|
Packit |
b099d7 |
return;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
menuItemCount = menuSpec->menuButtonCount;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
for (n = 0; n < menuItemCount && n < MAX_MENU_ITEMS; n++)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
itemName[n][0] = '\0';
|
|
Packit |
b099d7 |
sensitive[n] = FALSE;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
menuWin = XtWindow (menuSpec->menuWidget);
|
|
Packit |
b099d7 |
frameWin = pcd->clientFrameWin;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
sensitiveCount = 0;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
for (n = 0, NewMenuButton = menuSpec->menuButtons;
|
|
Packit |
b099d7 |
n < menuSpec->menuButtonCount;
|
|
Packit |
b099d7 |
n++, NewMenuButton++)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if (NewMenuButton->managed == FALSE)
|
|
Packit |
b099d7 |
continue;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
NewMenuItem = NewMenuButton->menuItem;
|
|
Packit |
b099d7 |
sensitive[n] = NewMenuButton->buttonWidget->core.sensitive;
|
|
Packit |
b099d7 |
itemY[n] = NewMenuButton->buttonWidget->core.y +
|
|
Packit |
b099d7 |
(NewMenuButton->buttonWidget->core.height / 2);
|
|
Packit |
b099d7 |
strcpy(itemName[n], NewMenuItem->label);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (sensitive[n] == TRUE)
|
|
Packit |
b099d7 |
sensitiveCount++;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)menuItemCount);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)sensitiveCount);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)menuWin);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)frameWin);
|
|
Packit |
b099d7 |
for (n=0; n < menuItemCount && n < MAX_MENU_ITEMS; n++)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)sensitive[n]);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)itemY[n]);
|
|
Packit |
b099d7 |
reply = PackString (reply, (String)itemName[n]);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*----------------------------------------------------------------------*
|
|
Packit |
b099d7 |
| GetItemCheckInfo
|
|
Packit |
b099d7 |
*----------------------------------------------------------------------*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
GetItemCheckInfo(ClientData *pcd, XtPointer reply)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
MenuSpec *menuSpec;
|
|
Packit |
b099d7 |
int menuItemCount;
|
|
Packit |
b099d7 |
int clientState;
|
|
Packit |
b099d7 |
int titleGadgetCount;
|
|
Packit |
b099d7 |
int titleId, systemId, minimizeId, maximizeId, northwestId;
|
|
Packit |
b099d7 |
int upperBorderWidth, lowerBorderWidth;
|
|
Packit |
b099d7 |
Window menuWin;
|
|
Packit |
b099d7 |
char itemName[MAX_MENU_ITEMS][MAX_NAME_LEN + 1];
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
MenuButton *NewMenuButton;
|
|
Packit |
b099d7 |
MenuItem *NewMenuItem;
|
|
Packit |
b099d7 |
int i,filledCount;
|
|
Packit |
b099d7 |
Boolean titleFound, systemFound, minimizeFound, maximizeFound = False;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
menuSpec = pcd->systemMenuSpec;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (menuSpec == NULL)
|
|
Packit |
b099d7 |
return;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
menuItemCount = menuSpec->menuButtonCount;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
for (i = 0; i < menuItemCount && i < MAX_MENU_ITEMS; i++)
|
|
Packit |
b099d7 |
itemName[i][0] = '\0';
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
menuWin = XtWindow (menuSpec->menuWidget);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
for (i = 0, NewMenuButton = menuSpec->menuButtons;
|
|
Packit |
b099d7 |
i < menuSpec->menuButtonCount;
|
|
Packit |
b099d7 |
i++, NewMenuButton++)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if (NewMenuButton->managed == FALSE)
|
|
Packit |
b099d7 |
continue;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
NewMenuItem = NewMenuButton->menuItem;
|
|
Packit |
b099d7 |
strcpy (itemName[i],NewMenuItem->label);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
filledCount = pcd->cTitleGadgets;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
for (i=0; i < filledCount; i++)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if (pcd->pTitleGadgets[i].id == FRAME_TITLE)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
titleId = FRAME_TITLE;
|
|
Packit |
b099d7 |
titleFound = True;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
if (pcd->pTitleGadgets[i].id == FRAME_SYSTEM)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
systemId = FRAME_SYSTEM;
|
|
Packit |
b099d7 |
systemFound = True;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
if (pcd->pTitleGadgets[i].id == FRAME_MINIMIZE)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
minimizeId = FRAME_MINIMIZE;
|
|
Packit |
b099d7 |
minimizeFound = True;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
if (pcd->pTitleGadgets[i].id == FRAME_MAXIMIZE)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
maximizeId = FRAME_MAXIMIZE;
|
|
Packit |
b099d7 |
maximizeFound = True;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (titleFound == False)
|
|
Packit |
b099d7 |
titleId = INVALID;
|
|
Packit |
b099d7 |
if (systemFound == False)
|
|
Packit |
b099d7 |
systemId = INVALID;
|
|
Packit |
b099d7 |
if (minimizeFound == False)
|
|
Packit |
b099d7 |
minimizeId = INVALID;
|
|
Packit |
b099d7 |
if (maximizeFound == False)
|
|
Packit |
b099d7 |
maximizeId = INVALID;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (!(pcd->decor & MWM_DECOR_RESIZEH))
|
|
Packit |
b099d7 |
northwestId = INVALID;
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
northwestId = pcd->pResizeGadgets[WM_NORTHWEST].id;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
upperBorderWidth = pcd->frameInfo.upperBorderWidth;
|
|
Packit |
b099d7 |
lowerBorderWidth = pcd->frameInfo.lowerBorderWidth;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
clientState = pcd->clientState;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)clientState);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)menuWin);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)menuItemCount);
|
|
Packit |
b099d7 |
for (i=0; i < menuItemCount && i < MAX_MENU_ITEMS; i++)
|
|
Packit |
b099d7 |
reply = PackString (reply, (String)itemName[i]);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)filledCount);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)titleId);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)systemId);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)minimizeId);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)maximizeId);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)northwestId);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)upperBorderWidth);
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)lowerBorderWidth);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*----------------------------------------------------------------------*
|
|
Packit |
b099d7 |
| GetRaiseInfo
|
|
Packit |
b099d7 |
*----------------------------------------------------------------------*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
GetRaiseInfo(ClientData *pcd, XtPointer reply)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
CARD32 state = pcd->clientState;
|
|
Packit |
b099d7 |
reply = PackCARD32 (reply, (CARD32)state);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*----------------------------------------------------------------------*
|
|
Packit |
b099d7 |
| GetAutomationData
|
|
Packit |
b099d7 |
*----------------------------------------------------------------------*/
|
|
Packit |
b099d7 |
void
|
|
Packit |
b099d7 |
GetAutomationData (XtPointer input, Atom *outputType, XtPointer *output, unsigned long *outputLen, int *outputFmt)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
ClientData *pcd;
|
|
Packit |
b099d7 |
CARD32 infoWanted;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
Window winId;
|
|
Packit |
b099d7 |
XtPointer reply;
|
|
Packit |
b099d7 |
int size;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
int i, n, menuItemCount;
|
|
Packit |
b099d7 |
MenuItem *menu_item;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
winId = UnpackCARD32(&input);
|
|
Packit |
b099d7 |
infoWanted = UnpackCARD32(&input);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Get client data associated with window if the widget making the request.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if ((pcd = GetPCD (0,winId)) == NULL)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
PRINT ("Can't get client data\n");
|
|
Packit |
b099d7 |
return;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
size = 0;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
switch (infoWanted)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
case WINDOW_MINIMIZE_INFO:
|
|
Packit |
b099d7 |
size += sizeof(CARD32) * 7;
|
|
Packit |
b099d7 |
*output = (XtPointer)XtMalloc(sizeof(CARD8) * size);
|
|
Packit |
b099d7 |
GetMinimizeInfo (pcd,*output);
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case WINDOW_MAXIMIZE_INFO:
|
|
Packit |
b099d7 |
size += sizeof (CARD32) * 7;
|
|
Packit |
b099d7 |
*output = (XtPointer)XtMalloc(sizeof(CARD8) * size);
|
|
Packit |
b099d7 |
GetMaximizeInfo(pcd,*output);
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case WINDOW_RAISE_INFO:
|
|
Packit |
b099d7 |
size += sizeof (CARD32);
|
|
Packit |
b099d7 |
*output = (XtPointer)XtMalloc(sizeof(CARD8) * size);
|
|
Packit |
b099d7 |
GetRaiseInfo(pcd, *output);
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case WINDOW_MOVE_INFO:
|
|
Packit |
b099d7 |
SetGrabServer(); /* tell mwm not to grab server */
|
|
Packit |
b099d7 |
size += sizeof (CARD32) * 16;
|
|
Packit |
b099d7 |
*output = (XtPointer)XtMalloc(sizeof(CARD8) * size);
|
|
Packit |
b099d7 |
GetMoveInfo(pcd,*output);
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case WINDOW_RESIZE_NORTH_INFO:
|
|
Packit |
b099d7 |
SetGrabServer(); /* tell mwm not to grab server */
|
|
Packit |
b099d7 |
size += sizeof (CARD32) * 17;
|
|
Packit |
b099d7 |
*output = (XtPointer)XtMalloc(sizeof(CARD8) * size);
|
|
Packit |
b099d7 |
GetResizeInfo(pcd,*output,WM_NORTH);
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case WINDOW_RESIZE_SOUTH_INFO:
|
|
Packit |
b099d7 |
SetGrabServer(); /* tell mwm not to grab server */
|
|
Packit |
b099d7 |
size += sizeof (CARD32) * 17;
|
|
Packit |
b099d7 |
*output = (XtPointer)XtMalloc(sizeof(CARD8) * size);
|
|
Packit |
b099d7 |
GetResizeInfo(pcd,*output,WM_SOUTH);
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case WINDOW_RESIZE_EAST_INFO:
|
|
Packit |
b099d7 |
SetGrabServer(); /* tell mwm not to grab server */
|
|
Packit |
b099d7 |
size += sizeof (CARD32) * 17;
|
|
Packit |
b099d7 |
*output = (XtPointer)XtMalloc(sizeof(CARD8) * size);
|
|
Packit |
b099d7 |
GetResizeInfo(pcd,*output,WM_EAST);
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case WINDOW_RESIZE_WEST_INFO:
|
|
Packit |
b099d7 |
SetGrabServer(); /* tell mwm not to grab server */
|
|
Packit |
b099d7 |
size += sizeof (CARD32) * 17;
|
|
Packit |
b099d7 |
*output = (XtPointer)XtMalloc(sizeof(CARD8) * size);
|
|
Packit |
b099d7 |
GetResizeInfo(pcd,*output,WM_WEST);
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case WINDOW_RESIZE_NORTHEAST_INFO:
|
|
Packit |
b099d7 |
SetGrabServer(); /* tell mwm not to grab server */
|
|
Packit |
b099d7 |
size += sizeof (CARD32) * 17;
|
|
Packit |
b099d7 |
*output = (XtPointer)XtMalloc(sizeof(CARD8) * size);
|
|
Packit |
b099d7 |
GetResizeInfo(pcd,*output,WM_NORTHEAST);
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case WINDOW_RESIZE_NORTHWEST_INFO:
|
|
Packit |
b099d7 |
SetGrabServer(); /* tell mwm not to grab server */
|
|
Packit |
b099d7 |
size += sizeof (CARD32) * 17;
|
|
Packit |
b099d7 |
*output = (XtPointer)XtMalloc(sizeof(CARD8) * size);
|
|
Packit |
b099d7 |
GetResizeInfo(pcd,*output,WM_NORTHWEST);
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case WINDOW_RESIZE_SOUTHEAST_INFO:
|
|
Packit |
b099d7 |
SetGrabServer(); /* tell mwm not to grab server */
|
|
Packit |
b099d7 |
size += sizeof (CARD32) * 17;
|
|
Packit |
b099d7 |
*output = (XtPointer)XtMalloc(sizeof(CARD8) * size);
|
|
Packit |
b099d7 |
GetResizeInfo(pcd,*output,WM_SOUTHEAST);
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case WINDOW_RESIZE_SOUTHWEST_INFO:
|
|
Packit |
b099d7 |
SetGrabServer(); /* tell mwm not to grab server */
|
|
Packit |
b099d7 |
size += sizeof (CARD32) * 17;
|
|
Packit |
b099d7 |
*output = (XtPointer)XtMalloc(sizeof(CARD8) * size);
|
|
Packit |
b099d7 |
GetResizeInfo(pcd,*output,WM_SOUTHWEST);
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case WINDOW_MENU_ITEM_SELECT_INFO:
|
|
Packit |
b099d7 |
if (pcd->systemMenuSpec)
|
|
Packit |
b099d7 |
menuItemCount = pcd->systemMenuSpec->menuButtonCount;
|
|
Packit |
b099d7 |
size += sizeof(CARD32) * 4;
|
|
Packit |
b099d7 |
for (n=0; n < menuItemCount && n < MAX_MENU_ITEMS; n++)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
menu_item = pcd->systemMenuSpec->menuButtons->menuItem;
|
|
Packit |
b099d7 |
size += sizeof (CARD32); /* sensitive */
|
|
Packit |
b099d7 |
size += sizeof (CARD32); /* itemY */
|
|
Packit |
b099d7 |
size += sizeof (CARD16) + ((strlen(menu_item->label) + 1) * sizeof(CARD8)); /*itemName */
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
*output = (XtPointer)XtMalloc(sizeof(CARD8) * size);
|
|
Packit |
b099d7 |
GetWindowItemSelectInfo(pcd,*output);
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case WINDOW_DEICONIFY_INFO:
|
|
Packit |
b099d7 |
if (pcd->pSD->useIconBox == True)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
size += sizeof (CARD32) * 37;
|
|
Packit |
b099d7 |
*output = (XtPointer)XtMalloc(sizeof(CARD8) * size);
|
|
Packit |
b099d7 |
GetIconInfo(pcd,*output,True);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
size += sizeof (CARD32) * 6;
|
|
Packit |
b099d7 |
*output = (XtPointer)XtMalloc(sizeof(CARD8) * size);
|
|
Packit |
b099d7 |
GetIconInfo(pcd,*output,False);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case WINDOW_MENU_POST_INFO:
|
|
Packit |
b099d7 |
size += sizeof (CARD32) * 12;
|
|
Packit |
b099d7 |
*output = (XtPointer)XtMalloc(sizeof(CARD8) * size);
|
|
Packit |
b099d7 |
GetWindowMenuPostInfo(pcd,*output);
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case WINDOW_FOCUS_INFO:
|
|
Packit |
b099d7 |
size += sizeof (CARD32) * 7;
|
|
Packit |
b099d7 |
*output = (XtPointer)XtMalloc(sizeof(CARD8) * size);
|
|
Packit |
b099d7 |
GetFocusInfo(pcd,*output);
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case WINDOW_MENU_UNPOST_INFO:
|
|
Packit |
b099d7 |
size += sizeof (CARD32) * 3;
|
|
Packit |
b099d7 |
*output = (XtPointer)XtMalloc(sizeof(CARD8) * size);
|
|
Packit |
b099d7 |
GetWindowMenuUnpostInfo(pcd,*output);
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case WINDOW_MENU_ITEM_CHECK_INFO:
|
|
Packit |
b099d7 |
if (pcd->systemMenuSpec)
|
|
Packit |
b099d7 |
menuItemCount = pcd->systemMenuSpec->menuButtonCount;
|
|
Packit |
b099d7 |
size += sizeof(CARD32) * 11;
|
|
Packit |
b099d7 |
for (n=0; n < menuItemCount && n < MAX_MENU_ITEMS; n++)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
menu_item = pcd->systemMenuSpec->menuButtons->menuItem;
|
|
Packit |
b099d7 |
size += sizeof (CARD16) + (strlen(menu_item->label + 1) * sizeof(CARD8)); /*itemName */
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
*output = (XtPointer)XtMalloc(sizeof(CARD8) * size);
|
|
Packit |
b099d7 |
GetItemCheckInfo(pcd, *output);
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case ICON_MOVE_INFO:
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
SetGrabServer(); /* tell mwm not to grab server */
|
|
Packit |
b099d7 |
size += sizeof (CARD32) * 6;
|
|
Packit |
b099d7 |
*output = (XtPointer)XtMalloc(sizeof(CARD8) * size);
|
|
Packit |
b099d7 |
GetIconInfo(pcd,*output,False);
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case ICON_MENU_POST_INFO:
|
|
Packit |
b099d7 |
if (pcd->pSD->useIconBox == True)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
size += sizeof (CARD32) * 37;
|
|
Packit |
b099d7 |
*output = (XtPointer)XtMalloc(sizeof(CARD8) * size);
|
|
Packit |
b099d7 |
GetIconInfo(pcd,*output,True);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
size += sizeof (CARD32) * 6;
|
|
Packit |
b099d7 |
*output = (XtPointer)XtMalloc(sizeof(CARD8) * size);
|
|
Packit |
b099d7 |
GetIconInfo(pcd,*output,False);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case ICON_MENU_UNPOST_INFO:
|
|
Packit |
b099d7 |
if (pcd->pSD->useIconBox == True)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
size += sizeof (CARD32) * 37;
|
|
Packit |
b099d7 |
*output = (XtPointer)XtMalloc(sizeof(CARD8) * size);
|
|
Packit |
b099d7 |
GetIconInfo(pcd,*output,True);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
size += sizeof (CARD32) * 6;
|
|
Packit |
b099d7 |
*output = (XtPointer)XtMalloc(sizeof(CARD8) * size);
|
|
Packit |
b099d7 |
GetIconInfo(pcd,*output,False);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
case ICON_MENU_ITEM_SELECT_INFO:
|
|
Packit |
b099d7 |
if (pcd->systemMenuSpec)
|
|
Packit |
b099d7 |
menuItemCount = pcd->systemMenuSpec->menuButtonCount;
|
|
Packit |
b099d7 |
size += sizeof(CARD32) * 11;
|
|
Packit |
b099d7 |
for (n=0; n < menuItemCount && n < MAX_MENU_ITEMS; n++)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
size += sizeof (CARD32); /* sensitive */
|
|
Packit |
b099d7 |
size += sizeof (CARD32); /* itemY */
|
|
Packit |
b099d7 |
menu_item = pcd->systemMenuSpec->menuButtons->menuItem;
|
|
Packit |
b099d7 |
size += sizeof (CARD16) + ((strlen(menu_item->label) + 1) * sizeof(CARD8)); /*itemName */
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
if (pcd->pSD->useIconBox == True)
|
|
Packit |
b099d7 |
size += sizeof (CARD32) * 37;
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
size += sizeof (CARD32) * 6;
|
|
Packit |
b099d7 |
*output = (XtPointer)XtMalloc(sizeof(CARD8) * size);
|
|
Packit |
b099d7 |
GetIconMenuItemSelectInfo (pcd,*output,pcd->pSD->useIconBox);
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
default:
|
|
Packit |
b099d7 |
PRINT ("Illegal operation from Automation");
|
|
Packit |
b099d7 |
break;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
*outputLen = (unsigned long)size;
|
|
Packit |
b099d7 |
*outputFmt = WSM_PROTO_FMT;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|