Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

eclipse does not paste #2450

Closed
totaam opened this issue Oct 17, 2019 · 16 comments
Closed

eclipse does not paste #2450

totaam opened this issue Oct 17, 2019 · 16 comments
Labels

Comments

@totaam
Copy link
Collaborator

totaam commented Oct 17, 2019

Issue migrated from trac ticket # 2450

component: clipboard | priority: critical | resolution: fixed

2019-10-17 10:30:05: antoine created the issue


As reported on the mailing list: Clipboard paste in Eclipse.
Reproducible with win7 client and Fedora 30 server.
I saw a similar problem earlier with a Fedora 30 client, but can't reproduce it.

Here's the debug log.

  • Copy:
client   4 @00.867 clipboard event: CLIPBOARDUPDATE
client   4 @00.867 schedule_emit_token() elapsed=17919 (max=100)
process clipboard token selection=CLIPBOARD, local clipboard name=CLIPBOARD, proxy=X11ClipboardProxy(CLIPBOARD)
got token, selection=CLIPBOARD, targets=None, target data=None, claim=True, can-receive=True
claim_selection: set selection owner returned 1, owner=0x40000d
claim_selection: sending message to root window
claim_selection: done, owned=True
client   4 @00.868 _send_clipboard_token_handler(Win32ClipboardProxy, '()')
client   4 @00.868 clipboard_send: clipboard-token
client   4 @00.869 remove_block: CLIPBOARD
do_xpra_xfixes_selection_notify_event(<X11:XFSelectionNotify {'send_event': '0', 'serial': '0xf1f4', 'delivered_to': '0x40000d', 'window': '0x40000d', 'subtype': '0', 'owner': '0x40000d', 'selection': 'CLIPBOARD', 'timestamp': '213693543', 'selection_timestamp': '213693543'}>)
do_selection_notify_event(<X11:XFSelectionNotify {'send_event': '0', 'serial': '0xf1f4', 'delivered_to': '0x40000d', 'window': '0x40000d', 'subtype': '0', 'owner': '0x40000d', 'selection': 'CLIPBOARD', 'timestamp': '213693543', 'selection_timestamp': '213693543'}>) owned=True, was True (owner=0x40000d, xid=0x40000d), enabled=True, can-send=True
  • Paste into eclipse:
do_xpra_selection_request(<X11:SelectionRequest {'send_event': '0', 'serial': '0xf676', 'delivered_to': '0x40000d', 'window': '0x40000d', 'requestor': '0xc01045', 'selection': 'CLIPBOARD', 'target': 'UTF8_STRING', 'property': 'GDK_SELECTION', 'time': '213702106'}>)
do_selection_request_event(<X11:SelectionRequest {'send_event': '0', 'serial': '0xf676', 'delivered_to': '0x40000d', 'window': '0x40000d', 'requestor': '0xc01045', 'selection': 'CLIPBOARD', 'target': 'UTF8_STRING', 'property': 'GDK_SELECTION', 'time': '213702106'}>)
clipboard request for CLIPBOARD from window 0xc01045: 'Eclipse', target=UTF8_STRING, prop=GDK_SELECTION
send_clipboard_request_handler(X11ClipboardProxy(CLIPBOARD), 'CLIPBOARD', 'UTF8_STRING')
send_clipboard_request id=2
sending clipboard-pending-requests=1 to ClientConnection(4 : Protocol(tcp socket: 192.168.1.10:10000 <- 192.168.1.18:50350))
client   4 @09.438 process_clipboard_packet: clipboard-request, helper=ClipboardProtocolHelperCore
client   4 @09.439 process clipboard request, request_id=2, selection=CLIPBOARD, local name=CLIPBOARD, target=UTF8_STRING
client   4 @09.439 OpenClipboard(0x1f0410)=1
client   4 @09.439 got 22 bytes of data: "b'ALL_CSC_MODULE_OPTIONS'"
client   4 @09.440 got_text('ALL_CSC_MODULE_OPTIONS')
process clipboard contents, selection=CLIPBOARD, type=text/plain, format=8
client   4 @09.440 proxy_got_contents(2, CLIPBOARD, UTF8_STRING, text/plain, 8, <class 'bytes'>:22) data=0x414c4c5f4353435f4d4f44554c455f4f5054494f4e53..
wire selection to raw, encoding=bytes, type=text/plain, format=8, len(data)=22
clipboard wire -> raw: ('text/plain', 8, 'bytes', '"b\'ALL_CSC_MODULE_OPTIONS\'"') -> "b'ALL_CSC_MODULE_OPTIONS'"
clipboard got contents(2, 'text/plain', 8, '"b\'ALL_CSC_MODULE_OPTIONS\'"'): proxy=X11ClipboardProxy(CLIPBOARD) for selection=CLIPBOARD
got_contents('UTF8_STRING', 'text/plain', 8, '"b\'ALL_CSC_MODULE_OPTIONS\'"') pending=(<GdkX11.X11Window object at 0x7f9dd87fc460 (GdkX11Window at 0x5652a2d286b0)>, 'GDK_SELECTION', 213702106)
setting response 'ALL_CSC_MODULE_OPTIONS' to property GDK_SELECTION of window 'Eclipse' as text/plain
set_selection_response(<GdkX11.X11Window object at 0x7f9dd87fc460 (GdkX11Window at 0x5652a2d286b0)>, UTF8_STRING, GDK_SELECTION, text/plain, 8, '"b\'ALL_CSC_MODULE_OPTIONS\'"', 213702106)
client   4 @09.440 perform clipboard limit checking - datasize - 22, -1
client   4 @09.440 _munge_raw_selection_to_wire('UTF8_STRING', 'text/plain', 8, "'ALL_CSC_MODULE_OPTIONS'")
client   4 @09.440 _do_munge_raw_selection_to_wire(UTF8_STRING, text/plain, 8, <class 'bytes'>:22)
client   4 @09.441 clipboard raw -> wire: ('text/plain', 8, '"b\'ALL_CSC_MODULE_OPTIONS\'"') -> '"(b\'bytes\', b\'ALL_CSC_MODULE_OPTIONS\')"'
client   4 @09.441 clipboard_send: clipboard-contents
client   4 @09.443 process_clipboard_packet: clipboard-pending-requests, helper=ClipboardProtocolHelperCore
client   4 @09.443 clipboard_progress(None, 1)
client   4 @09.443 clipboard_notify(1) notification timer=None
sending clipboard-pending-requests=0 to ClientConnection(4 : Protocol(tcp socket: 192.168.1.10:10000 <- 192.168.1.18:50350))
client   4 @09.544 process_clipboard_packet: clipboard-pending-requests, helper=ClipboardProtocolHelperCore
client   4 @09.544 clipboard_progress(None, 0)
client   4 @09.544 clipboard_notify(0) notification timer=None
@totaam
Copy link
Collaborator Author

totaam commented Oct 18, 2019

2019-10-18 11:47:47: antoine changed priority from major to critical

@totaam
Copy link
Collaborator Author

totaam commented Oct 18, 2019

2019-10-18 11:47:47: antoine changed status from new to assigned

@totaam
Copy link
Collaborator Author

totaam commented Oct 18, 2019

2019-10-18 11:47:47: antoine edited the issue description

@totaam
Copy link
Collaborator Author

totaam commented Oct 21, 2019

2019-10-21 07:48:33: antoine commented


See also #2452, the new clipboard code comes from #812

@totaam
Copy link
Collaborator Author

totaam commented Oct 21, 2019

2019-10-21 11:35:35: antoine commented


I think the problem comes from the fact that an application is free to request any target it wants (ie: from above, target=UTF8_STRING), but the win32 client is limited to just text/plain and the application may not be happy with that..
We should "convert" (or just cast) it.

@totaam
Copy link
Collaborator Author

totaam commented Oct 21, 2019

2019-10-21 12:06:44: antoine commented


Comparing this with a native X11 client which does reply with the exact target requested:

do_xpra_selection_request(<X11:SelectionRequest {'send_event': '0', 'serial': '0x335e', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0xc06c77', 'selection': 'CLIPBOARD', 'target': 'UTF8_STRING', 'property': 'GDK_SELECTION', 'time': '363040869'}>)
do_selection_request_event(<X11:SelectionRequest {'send_event': '0', 'serial': '0x335e', 'delivered_to': '0x400008', 'window': '0x400008', 'requestor': '0xc06c77', 'selection': 'CLIPBOARD', 'target': 'UTF8_STRING', 'property': 'GDK_SELECTION', 'time': '363040869'}>)
clipboard request for CLIPBOARD from window 0xc06c77: 'Eclipse', target=UTF8_STRING, prop=GDK_SELECTION
send_clipboard_request_handler(X11ClipboardProxy(CLIPBOARD), 'CLIPBOARD', 'UTF8_STRING')
send_clipboard_request id=0
sending clipboard-pending-requests=1 to ClientConnection(2 : Protocol(unix-domain socket:/run/user/1000/xpra/localhost.localdomain-4))
client   2 @55.878 process_clipboard_packet: clipboard-request, helper=X11Clipboard
client   2 @55.878 process clipboard request, request_id=0, selection=CLIPBOARD, local name=CLIPBOARD, target=UTF8_STRING
client   2 @55.878 get_contents(UTF8_STRING, <function ClipboardProtocolHelperCore._process_clipboard_request.<locals>.got_contents at 0x7f4912fc2680>, 0) owned=False, have-token=False
client   2 @55.878 requesting local XConvertSelection from 'Terminal' as 'UTF8_STRING' into 'CLIPBOARD-UTF8_STRING'
client   2 @55.879 process_clipboard_packet: clipboard-pending-requests, helper=X11Clipboard
client   2 @55.879 clipboard_progress(None, 1)
client   2 @55.879 clipboard_notify(1) notification timer=None
client   2 @55.880 do_xpra_property_notify_event(<X11:PropertyNotify {'send_event': '0', 'serial': '0x23ca', 'delivered_to': '0x4800015', 'window': '0x4800015', 'atom': 'CLIPBOARD-UTF8_STRING', 'time': '363040876'}>)
client   2 @55.880 do_property_notify(<X11:PropertyNotify {'send_event': '0', 'serial': '0x23ca', 'delivered_to': '0x4800015', 'window': '0x4800015', 'atom': 'CLIPBOARD-UTF8_STRING', 'time': '363040876'}>)
client   2 @55.880 CLIPBOARD-UTF8_STRING='MYVALUE' (UTF8_STRING : 8)
client   2 @55.880 filter_data(UTF8_STRING, UTF8_STRING, 8, ..)
client   2 @55.880 got_local_contents: calling <function ClipboardProtocolHelperCore._process_clipboard_request.<locals>.got_contents at 0x7f4912fc2680>('UTF8_STRING', 8, '"b\'MYVALUE\'"'), time=0
client   2 @55.880 proxy_got_contents(0, CLIPBOARD, UTF8_STRING, UTF8_STRING, 8, <class 'bytes'>:7) data=0x4d5956414c5545..
client   2 @55.880 perform clipboard limit checking - datasize - 7, -1
client   2 @55.881 _munge_raw_selection_to_wire('UTF8_STRING', 'UTF8_STRING', 8, "'MYVALUE'")
client   2 @55.881 _do_munge_raw_selection_to_wire(UTF8_STRING, UTF8_STRING, 8, <class 'bytes'>:7)
client   2 @55.881 clipboard raw -> wire: ('UTF8_STRING', 8, '"b\'MYVALUE\'"') -> '"(b\'bytes\', b\'MYVALUE\')"'
client   2 @55.881 clipboard_send: clipboard-contents
process clipboard contents, selection=CLIPBOARD, type=UTF8_STRING, format=8
wire selection to raw, encoding=bytes, type=UTF8_STRING, format=8, len(data)=7
clipboard wire -> raw: ('UTF8_STRING', 8, 'bytes', '"b\'MYVALUE\'"') -> "b'MYVALUE'"
client   2 @55.881 do_xpra_property_notify_event(<X11:PropertyNotify {'send_event': '0', 'serial': '0x23d1', 'delivered_to': '0x4800015', 'window': '0x4800015', 'atom': 'CLIPBOARD-UTF8_STRING', 'time': '363040877'}>)
clipboard got contents(0, 'UTF8_STRING', 8, '"b\'MYVALUE\'"'): proxy=X11ClipboardProxy(CLIPBOARD) for selection=CLIPBOARD
got_contents('UTF8_STRING', 'UTF8_STRING', 8, '"b\'MYVALUE\'"') pending=(<GdkX11.X11Window object at 0x7f8731f9a780 (GdkX11Window at 0x55c89d2e0120)>, 'GDK_SELECTION', 363040869)
client   2 @55.881 do_property_notify(<X11:PropertyNotify {'send_event': '0', 'serial': '0x23d1', 'delivered_to': '0x4800015', 'window': '0x4800015', 'atom': 'CLIPBOARD-UTF8_STRING', 'time': '363040877'}>)
setting response 'MYVALUE' to property GDK_SELECTION of window 'Eclipse' as UTF8_STRING
client   2 @55.882 do_property_notify() property 'CLIPBOARD-UTF8_STRING' is gone?
set_selection_response(<GdkX11.X11Window object at 0x7f8731f9a780 (GdkX11Window at 0x55c89d2e0120)>, UTF8_STRING, GDK_SELECTION, UTF8_STRING, 8, "'MYVALUE'", 363040869)
client   2 @55.882   File "/usr/lib64/python3.7/site-packages/xpra/x11/gtk_x11/clipboard.py", line 574, in do_property_notify
client   2 @55.882     dtype, dformat = X11Window.GetWindowPropertyType(self.xid, event.atom, True)
client   2 @55.882   File "xpra/x11/bindings/window_bindings.pyx", line 1171, in xpra.x11.bindings.window_bindings.X11WindowBindingsInstance.GetWindowPropertyType
client   2 @55.882     raise BadPropertyType("None type")
client   2 @55.882 BadPropertyType: None type
sending clipboard-pending-requests=0 to ClientConnection(2 : Protocol(unix-domain socket:/run/user/1000/xpra/localhost.localdomain-4))
client   2 @55.982 process_clipboard_packet: clipboard-pending-requests, helper=X11Clipboard
client   2 @55.982 clipboard_progress(None, 0)
client   2 @55.982 clipboard_notify(0) notification timer=None

@totaam
Copy link
Collaborator Author

totaam commented Oct 21, 2019

2019-10-21 12:38:32: antoine commented


Probably fixed in r24231. Will test some more.

@totaam
Copy link
Collaborator Author

totaam commented Oct 22, 2019

2019-10-22 09:31:24: antoine changed status from assigned to closed

@totaam
Copy link
Collaborator Author

totaam commented Oct 22, 2019

2019-10-22 09:31:24: antoine set resolution to fixed

@totaam
Copy link
Collaborator Author

totaam commented Oct 23, 2019

2019-10-23 12:34:07: antoine changed status from closed to reopened

@totaam
Copy link
Collaborator Author

totaam commented Oct 23, 2019

2019-10-23 12:34:07: antoine removed resolution (was fixed)

@totaam
Copy link
Collaborator Author

totaam commented Oct 23, 2019

2019-10-23 12:34:07: antoine commented


Looks like this fix is causing a regression: #2461.

@totaam
Copy link
Collaborator Author

totaam commented Oct 23, 2019

2019-10-23 13:21:06: antoine changed status from reopened to closed

@totaam
Copy link
Collaborator Author

totaam commented Oct 23, 2019

2019-10-23 13:21:06: antoine set resolution to fixed

@totaam
Copy link
Collaborator Author

totaam commented Oct 23, 2019

2019-10-23 13:21:06: antoine commented


The correct fix is in r24247.

@totaam totaam closed this as completed Oct 23, 2019
@totaam
Copy link
Collaborator Author

totaam commented Mar 21, 2020

2020-03-21 12:42:46: antoine commented


Backported to v3 in 25712, see ticket/2638#comment:7.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant