aboutsummaryrefslogtreecommitdiff
path: root/nx-X11/programs/Xserver/hw/nxagent/NXdispatch.c
diff options
context:
space:
mode:
Diffstat (limited to 'nx-X11/programs/Xserver/hw/nxagent/NXdispatch.c')
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/NXdispatch.c40
1 files changed, 21 insertions, 19 deletions
diff --git a/nx-X11/programs/Xserver/hw/nxagent/NXdispatch.c b/nx-X11/programs/Xserver/hw/nxagent/NXdispatch.c
index 10616834e..4a9ae73ae 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/NXdispatch.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/NXdispatch.c
@@ -194,6 +194,13 @@ extern int nxagentMaxAllowedResets;
extern int nxagentFindClientResource(int, RESTYPE, void *);
+#ifdef NXAGENT_CLIPBOARD
+extern int nxagentPrimarySelection;
+extern int nxagentClipboardSelection;
+extern int nxagentMaxSelections;
+#endif
+
+extern int nxOpenFont(ClientPtr, XID, Mask, unsigned, char*);
void
InitSelections()
@@ -206,23 +213,23 @@ InitSelections()
#ifdef NXAGENT_CLIPBOARD
{
Selection *newsels;
- newsels = (Selection *)malloc(2 * sizeof(Selection));
+ newsels = (Selection *)malloc(nxagentMaxSelections * sizeof(Selection));
if (!newsels)
return;
- NumCurrentSelections += 2;
+ NumCurrentSelections += nxagentMaxSelections;
CurrentSelections = newsels;
- CurrentSelections[0].selection = XA_PRIMARY;
- CurrentSelections[0].lastTimeChanged = ClientTimeToServerTime(0);
- CurrentSelections[0].window = screenInfo.screens[0]->root->drawable.id;
- CurrentSelections[0].pWin = NULL;
- CurrentSelections[0].client = NullClient;
-
- CurrentSelections[1].selection = MakeAtom("CLIPBOARD", 9, 1);
- CurrentSelections[1].lastTimeChanged = ClientTimeToServerTime(0);
- CurrentSelections[1].window = screenInfo.screens[0]->root->drawable.id;
- CurrentSelections[1].pWin = NULL;
- CurrentSelections[1].client = NullClient;
+ CurrentSelections[nxagentPrimarySelection].selection = XA_PRIMARY;
+ CurrentSelections[nxagentPrimarySelection].lastTimeChanged = ClientTimeToServerTime(0);
+ CurrentSelections[nxagentPrimarySelection].window = screenInfo.screens[0]->root->drawable.id;
+ CurrentSelections[nxagentPrimarySelection].pWin = NULL;
+ CurrentSelections[nxagentPrimarySelection].client = NullClient;
+
+ CurrentSelections[nxagentClipboardSelection].selection = MakeAtom("CLIPBOARD", 9, 1);
+ CurrentSelections[nxagentClipboardSelection].lastTimeChanged = ClientTimeToServerTime(0);
+ CurrentSelections[nxagentClipboardSelection].window = screenInfo.screens[0]->root->drawable.id;
+ CurrentSelections[nxagentClipboardSelection].pWin = NULL;
+ CurrentSelections[nxagentClipboardSelection].client = NullClient;
}
#endif
@@ -684,11 +691,7 @@ ProcConvertSelection(register ClientPtr client)
(stuff->selection == MakeAtom("CLIPBOARD", 9, 0))) &&
nxagentOption(Clipboard) != ClipboardNone)
{
- int i = 0;
-
- while ((i < NumCurrentSelections) &&
- CurrentSelections[i].selection != stuff->selection) i++;
-
+ int i = nxagentFindCurrentSelectionIndex(stuff->selection);
if ((i < NumCurrentSelections) && (CurrentSelections[i].window != None))
{
if (nxagentConvertSelection(client, pWin, stuff->selection, stuff->requestor,
@@ -769,7 +772,6 @@ ProcOpenFont(register ClientPtr client)
fontReq[stuff->nbytes]=0;
if (strchr(fontReq,'*') || strchr(fontReq,'?'))
{
- extern int nxOpenFont(ClientPtr, XID, Mask, unsigned, char*);
#ifdef NXAGENT_FONTMATCH_DEBUG
fprintf(stderr, "Dispatch: ProcOpenFont try to find a common font with font pattern=%s\n",fontReq);
#endif