Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
N
nx-libs
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
1
Issues
1
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
dimbor
nx-libs
Commits
2ee7626a
Commit
2ee7626a
authored
Aug 03, 2019
by
Ulrich Sibiller
Committed by
Mike Gabriel
Sep 29, 2019
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Clipboard.c: introduce SendSelectionNotifyEventToServer
fixup! Clipboard.c: introduce XSendNotificationEventHelper
parent
bc997cf6
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
50 additions
and
82 deletions
+50
-82
Clipboard.c
nx-X11/programs/Xserver/hw/nxagent/Clipboard.c
+50
-82
No files found.
nx-X11/programs/Xserver/hw/nxagent/Clipboard.c
View file @
2ee7626a
...
...
@@ -355,6 +355,52 @@ int GetWindowProperty(WindowPtr pWin, Atom property, long longOffset, long longL
unsigned
long
*
nItems
,
unsigned
long
*
bytesAfter
,
unsigned
char
**
propData
);
/*
* Send a SelectionNotify event to the real X server and do some error
* handling (in DEBUG mode)
*/
Status
SendSelectionNotifyEventToServer
(
XSelectionEvent
*
event_to_send
)
{
Window
w
=
event_to_send
->
requestor
;
event_to_send
->
type
=
SelectionNotify
;
event_to_send
->
send_event
=
True
;
event_to_send
->
display
=
nxagentDisplay
;
#ifdef DEBUG
fprintf
(
stderr
,
"%s: Sending event to requestor [%p].
\n
"
,
__func__
,
(
void
*
)
w
);
#endif
Status
result
=
XSendEvent
(
nxagentDisplay
,
w
,
False
,
0L
,
(
XEvent
*
)
event_to_send
);
#ifdef DEBUG
/*
* man XSendEvent: XSendEvent returns zero if the conversion to wire
* protocol format failed and returns nonzero otherwise. XSendEvent
* can generate BadValue and BadWindow errors.
*/
if
(
result
==
0
)
{
fprintf
(
stderr
,
"%s: XSendEvent to [0x%x] failed.
\n
"
,
__func__
,
w
);
}
else
{
if
(
result
==
BadValue
||
result
==
BadWindow
)
{
fprintf
(
stderr
,
"%s: WARNING! XSendEvent to [0x%x] failed: %s
\n
"
,
__func__
,
w
,
GetXErrorString
(
result
));
}
else
{
fprintf
(
stderr
,
"%s: XSendEvent() successfully sent to [0x%x]
\n
"
,
__func__
,
w
);
}
}
#endif
//NXFlushDisplay(nxagentDisplay, NXFlushLink);
return
result
;
}
Bool
nxagentValidServerTargets
(
Atom
target
)
{
if
(
target
==
XA_STRING
)
...
...
@@ -560,35 +606,12 @@ FIXME: Do we need this?
}
}
eventSelection
.
type
=
SelectionNotify
;
eventSelection
.
send_event
=
True
;
eventSelection
.
display
=
nxagentDisplay
;
eventSelection
.
requestor
=
X
->
xselectionrequest
.
requestor
;
eventSelection
.
selection
=
X
->
xselectionrequest
.
selection
;
eventSelection
.
target
=
X
->
xselectionrequest
.
target
;
eventSelection
.
time
=
X
->
xselectionrequest
.
time
;
#ifdef DEBUG
int
result
=
#endif
XSendEvent
(
nxagentDisplay
,
eventSelection
.
requestor
,
False
,
0L
,
(
XEvent
*
)
&
eventSelection
);
#ifdef DEBUG
fprintf
(
stderr
,
"%s: XSendEvent() returned [%s]
\n
"
,
__func__
,
GetXErrorString
(
result
));
if
(
result
==
BadValue
||
result
==
BadWindow
)
{
fprintf
(
stderr
,
"%s: WARNING! XSendEvent failed.
\n
"
,
__func__
);
}
else
{
fprintf
(
stderr
,
"%s: XSendEvent sent to window [0x%lx].
\n
"
,
__func__
,
eventSelection
.
requestor
);
}
#endif
SendSelectionNotifyEventToServer
(
&
eventSelection
);
return
;
}
...
...
@@ -679,36 +702,13 @@ FIXME: Do we need this?
* to requestor with property None.
*/
eventSelection
.
type
=
SelectionNotify
;
eventSelection
.
send_event
=
True
;
eventSelection
.
display
=
nxagentDisplay
;
eventSelection
.
requestor
=
X
->
xselectionrequest
.
requestor
;
eventSelection
.
selection
=
X
->
xselectionrequest
.
selection
;
eventSelection
.
target
=
X
->
xselectionrequest
.
target
;
eventSelection
.
property
=
None
;
eventSelection
.
time
=
X
->
xselectionrequest
.
time
;
#ifdef DEBUG
int
result
=
#endif
XSendEvent
(
nxagentDisplay
,
eventSelection
.
requestor
,
False
,
0L
,
(
XEvent
*
)
&
eventSelection
);
#ifdef DEBUG
fprintf
(
stderr
,
"%s: XSendEvent() returned [%s]
\n
"
,
__func__
,
GetXErrorString
(
result
));
if
(
result
==
BadValue
||
result
==
BadWindow
)
{
fprintf
(
stderr
,
"%s: WARNING! XSendEvent failed.
\n
"
,
__func__
);
}
else
{
fprintf
(
stderr
,
"%s: XSendEvent with property None sent to window [0x%lx].
\n
"
,
__func__
,
eventSelection
.
requestor
);
}
#endif
SendSelectionNotifyEventToServer
(
&
eventSelection
);
}
}
}
...
...
@@ -1169,9 +1169,6 @@ void nxagentNotifySelection(XEvent *X)
}
memset
(
&
eventSelection
,
0
,
sizeof
(
XSelectionEvent
));
eventSelection
.
type
=
SelectionNotify
;
eventSelection
.
send_event
=
True
;
eventSelection
.
display
=
nxagentDisplay
;
eventSelection
.
requestor
=
lastServerRequestor
;
eventSelection
.
selection
=
X
->
xselection
.
selection
;
...
...
@@ -1189,23 +1186,7 @@ void nxagentNotifySelection(XEvent *X)
* eventSelection.time = lastServerTime;
*/
#ifdef DEBUG
fprintf
(
stderr
,
"%s: Sending event to requestor [%p].
\n
"
,
__func__
,
(
void
*
)
eventSelection
.
requestor
);
#endif
result
=
XSendEvent
(
nxagentDisplay
,
eventSelection
.
requestor
,
False
,
0L
,
(
XEvent
*
)
&
eventSelection
);
#ifdef DEBUG
fprintf
(
stderr
,
"%s: XSendEvent() returned [%s]
\n
"
,
__func__
,
GetXErrorString
(
result
));
#endif
if
(
result
==
BadValue
||
result
==
BadWindow
)
{
fprintf
(
stderr
,
"SelectionRequest - XSendEvent failed
\n
"
);
}
SendSelectionNotifyEventToServer
(
&
eventSelection
);
lastServerRequestor
=
None
;
/* allow further request */
}
...
...
@@ -1688,16 +1669,12 @@ int nxagentSendNotify(xEvent *event)
if
(
event
->
u
.
selectionNotify
.
property
==
clientCutProperty
)
{
XSelectionEvent
x
;
int
result
;
/*
* Setup selection notify event to real server.
*/
memset
(
&
x
,
0
,
sizeof
(
XSelectionEvent
));
x
.
type
=
SelectionNotify
;
x
.
send_event
=
True
;
x
.
display
=
nxagentDisplay
;
x
.
requestor
=
serverWindow
;
/*
...
...
@@ -1722,16 +1699,7 @@ int nxagentSendNotify(xEvent *event)
fprintf
(
stderr
,
"%s: Propagating clientCutProperty to requestor [%p].
\n
"
,
__func__
,
(
void
*
)
x
.
requestor
);
#endif
result
=
XSendEvent
(
nxagentDisplay
,
x
.
requestor
,
False
,
0L
,
(
XEvent
*
)
&
x
);
#ifdef DEBUG
fprintf
(
stderr
,
"%s: XSendEvent() returned [%s]
\n
"
,
__func__
,
GetXErrorString
(
result
));
#endif
if
(
result
==
BadValue
||
result
==
BadWindow
)
{
fprintf
(
stderr
,
"%s: XSendEvent failed.
\n
"
,
__func__
);
}
SendSelectionNotifyEventToServer
(
&
x
);
return
1
;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment