xpra icon
Bug tracker and wiki

Opened 5 months ago

Last modified 4 weeks ago

#2789 assigned defect

middle click double paste with IE

Reported by: Antoine Martin Owned by: Antoine Martin
Priority: major Milestone: 4.2
Component: html5 Version: 3.0.x
Keywords: Cc:

Description

in an xterm, select a word with a double click, the use middle click to paste it.

With all other browsers, the word is pasted into the xterm once, with IE it gets pasted twice!

Double click on the word ADDRCONF, previous value was NETDEV_CHANGE:

28,766 client   5 clipboard paste event, data= NETDEV_CHANGE
28,767 process_button_action(WebSocket(ws socket: 192.168.0.10:10000 <- 192.168.0.108:59511), [b'button-action', 1, 1, 1, [504, 248], [], []])
28,769 do_process_mouse_common(WebSocket(ws socket: 192.168.0.10:10000 <- 192.168.0.108:59511), 1, [504, 248], -1)
28,770 move_pointer(1, [504, 248], -1) screen_no=-1, device=XTestPointerDevice, position=(504, 248)
28,770 xtest_fake_motion(-1, 504, 248)
28,771 xtest_fake_button(1, 1)
28,796 compress:   0.6ms for   78x13   pixels at  203,119  for wid=1     using     rgb24 with ratio  16.9%  (    3KB to     0KB), sequence    43, client_options={'rgb_format': 'RGB', 'lz4': 1, 'flush': 1}
28,797 compress:   0.4ms for    6x13   pixels at  185,301  for wid=1     using     rgb24 with ratio  75.0%  (    0KB to     0KB), sequence    44, client_options={'rgb_format': 'RGB'}
28,827 client   5 clipboard paste event, data= NETDEV_CHANGE
28,828 client   5 clipboard paste event, data= NETDEV_CHANGE
28,828 client   5 clipboard pending= false buffer= NETDEV_CHANGE
28,828 process_button_action(WebSocket(ws socket: 192.168.0.10:10000 <- 192.168.0.108:59511), [b'button-action', 1, 1, 0, [504, 248], [], []])
28,829 do_process_mouse_common(WebSocket(ws socket: 192.168.0.10:10000 <- 192.168.0.108:59511), 1, [504, 248], -1)
28,829 move_pointer(1, [504, 248], -1) screen_no=-1, device=XTestPointerDevice, position=(504, 248)
28,829 xtest_fake_motion(-1, 504, 248)
28,829 xtest_fake_button(1, 0)
28,851 compress:   0.1ms for    6x13   pixels at  185,301  for wid=1     using     rgb24 with ratio  75.0%  (    0KB to     0KB), sequence    45, client_options={'rgb_format': 'RGB'}
28,889 client   5 clipboard paste event, data= NETDEV_CHANGE
28,902 process_button_action(WebSocket(ws socket: 192.168.0.10:10000 <- 192.168.0.108:59511), [b'button-action', 1, 1, 1, [504, 248], [], []])
28,903 do_process_mouse_common(WebSocket(ws socket: 192.168.0.10:10000 <- 192.168.0.108:59511), 1, [504, 248], -1)
28,903 move_pointer(1, [504, 248], -1) screen_no=-1, device=XTestPointerDevice, position=(504, 248)
28,903 xtest_fake_motion(-1, 504, 248)
28,903 xtest_fake_button(1, 1)
28,904 motion_signaled(WindowModel(0x600022), <X11:MotionNotify {'send_event': '0', 'serial': '0x10a1c', 'delivered_to': '0x600022', 'window': '0x600022', 'root': '0x299', 'subwindow': '0x60002d', 'time': '203569588', 'x': '174', 'y': '48', 'x_root': '504', 'y_root': '248', 'state': '0', 'is_hint': '1', 'same_screen': '1'}>) last mouse user=9431c9d0-db66-842c-d9ff-adda9a89b378
28,926 compress:   0.1ms for   24x13   pixels at  173,41   for wid=1     using     rgb24 with ratio  16.1%  (    1KB to     0KB), sequence    46, client_options={'rgb_format': 'RGB', 'lz4': 1, 'flush': 2}
28,926 compress:   0.3ms for   24x13   pixels at  149,41   for wid=1     using     rgb24 with ratio  14.3%  (    1KB to     0KB), sequence    47, client_options={'rgb_format': 'RGB', 'lz4': 1, 'flush': 1}
28,927 compress:   0.1ms for    6x13   pixels at  185,301  for wid=1     using     rgb24 with ratio  75.0%  (    0KB to     0KB), sequence    48, client_options={'rgb_format': 'RGB'}
28,965 client   5 clipboard paste event, data= NETDEV_CHANGE
28,965 client   5 clipboard paste event, data= NETDEV_CHANGE
28,965 client   5 clipboard pending= false buffer= NETDEV_CHANGE
28,991 process_button_action(WebSocket(ws socket: 192.168.0.10:10000 <- 192.168.0.108:59511), [b'button-action', 1, 1, 0, [504, 248], [], []])
28,992 do_process_mouse_common(WebSocket(ws socket: 192.168.0.10:10000 <- 192.168.0.108:59511), 1, [504, 248], -1)
28,992 move_pointer(1, [504, 248], -1) screen_no=-1, device=XTestPointerDevice, position=(504, 248)
28,992 xtest_fake_motion(-1, 504, 248)
28,992 xtest_fake_button(1, 0)
28,992 do_xpra_xfixes_selection_notify_event(<X11:XFSelectionNotify {'send_event': '0', 'serial': '0x10a33', 'delivered_to': '0x40000d', 'window': '0x40000d', 'subtype': '0', 'owner': '0x60002d', 'selection': 'PRIMARY', 'timestamp': '203569677', 'selection_timestamp': '203569677'}>)
28,993 do_selection_notify_event(<X11:XFSelectionNotify {'send_event': '0', 'serial': '0x10a33', 'delivered_to': '0x40000d', 'window': '0x40000d', 'subtype': '0', 'owner': '0x60002d', 'selection': 'PRIMARY', 'timestamp': '203569677', 'selection_timestamp': '203569677'}>) owned=False, was False (owner=0x60002d, xid=0x40000d), enabled=True, can-send=True
28,993 do_owner_changed()
28,993 get_contents(TARGETS, <function ClipboardProxy.schedule_emit_token.<locals>.got_targets at 0x7fdf2d470b00>) owned=False, have-token=False
28,993 requesting local XConvertSelection from child of 'antoine@desktop-eth0:~/projects/Xpra/trunk/src' as 'TARGETS' into 'PRIMARY-TARGETS'
28,993 do_xpra_property_notify_event(<X11:PropertyNotify {'send_event': '0', 'serial': '0x10a40', 'delivered_to': '0x40000d', 'window': '0x40000d', 'atom': 'PRIMARY-TARGETS', 'time': '203569678'}>)
28,993 do_property_notify(<X11:PropertyNotify {'send_event': '0', 'serial': '0x10a40', 'delivered_to': '0x40000d', 'window': '0x40000d', 'atom': 'PRIMARY-TARGETS', 'time': '203569678'}>)
28,993 PRIMARY-TARGETS=b'\xe7\x00\x00\x00\x00\x00\x00\x00\xa5\x01\x00\x .. x00\x00\x00\x00\xa3\x01\x00\x00\x00\x00\x00\x00' (ATOM : 32)
28,994 filter_data(TARGETS, ATOM, 32, ..)
28,994 got_local_contents: calling <function ClipboardProxy.schedule_emit_token.<locals>.got_targets at 0x7fdf2d470b00>('ATOM', 32, b'\xe7\x00\x00\x00\x00\x00\x00\x00\xa5\x01\x00\x .. x00\x00\x00\x00\xa3\x01\x00\x00\x00\x00\x00\x00')
28,994 got_targets: ('UTF8_STRING', 'TEXT', 'COMPOUND_TEXT', 'STRING', 'LENGTH', 'LIST_LENGTH', 'TIMESTAMP', 'HOSTNAME', 'IP_ADDRESS', 'USER', 'CLASS', 'NAME', 'CLIENT_WINDOW', 'OWNER_OS')
28,994 get_contents(UTF8_STRING, <function ClipboardProxy.schedule_emit_token.<locals>.with_targets.<locals>.got_text_target at 0x7fdf2d470560>) owned=False, have-token=False
28,994 requesting local XConvertSelection from child of 'antoine@desktop-eth0:~/projects/Xpra/trunk/src' as 'UTF8_STRING' into 'PRIMARY-UTF8_STRING'
28,994 do_xpra_property_notify_event(<X11:PropertyNotify {'send_event': '0', 'serial': '0x10a43', 'delivered_to': '0x40000d', 'window': '0x40000d', 'atom': 'PRIMARY-TARGETS', 'time': '203569678'}>)
28,994 do_property_notify(<X11:PropertyNotify {'send_event': '0', 'serial': '0x10a43', 'delivered_to': '0x40000d', 'window': '0x40000d', 'atom': 'PRIMARY-TARGETS', 'time': '203569678'}>)
28,994 do_property_notify() property 'PRIMARY-TARGETS' is gone?
Traceback (most recent call last):
  File "/usr/lib64/python3.7/site-packages/xpra/x11/gtk_x11/clipboard.py", line 631, in do_property_notify
    dtype, dformat = X11Window.GetWindowPropertyType(self.xid, event.atom, True)
  File "xpra/x11/bindings/window_bindings.pyx", line 1202, in xpra.x11.bindings.window_bindings.X11WindowBindingsInstance.GetWindowPropertyType
    raise BadPropertyType("None type")
xpra.x11.bindings.window_bindings.BadPropertyType: None type
28,995 do_xpra_property_notify_event(<X11:PropertyNotify {'send_event': '0', 'serial': '0x10a5d', 'delivered_to': '0x40000d', 'window': '0x40000d', 'atom': 'PRIMARY-UTF8_STRING', 'time': '203569679'}>)
28,995 do_property_notify(<X11:PropertyNotify {'send_event': '0', 'serial': '0x10a5d', 'delivered_to': '0x40000d', 'window': '0x40000d', 'atom': 'PRIMARY-UTF8_STRING', 'time': '203569679'}>)
28,995 PRIMARY-UTF8_STRING=b'ADDRCONF' (UTF8_STRING : 8)
28,995 filter_data(UTF8_STRING, UTF8_STRING, 8, ..)
28,995 got_local_contents: calling <function ClipboardProxy.schedule_emit_token.<locals>.with_targets.<locals>.got_text_target at 0x7fdf2d470560>('UTF8_STRING', 8, b'ADDRCONF')
28,995 got_text_target(UTF8_STRING, 8, b'ADDRCONF')
28,995 _send_clipboard_token_handler(X11ClipboardProxy(PRIMARY), (('UTF8_STRING', 'TEXT', 'STRING'), ('UTF8_STRING', 'UTF8_STRING', 8, b'ADDRCONF')))
28,995 _munge_raw_selection_to_wire('UTF8_STRING', 'UTF8_STRING', 8, 'ADDRCONF')
28,995 _do_munge_raw_selection_to_wire(UTF8_STRING, UTF8_STRING, 8, <class 'bytes'>:8)
28,995 send_clipboard_token_handler PRIMARY to PRIMARY
28,995 do_xpra_property_notify_event(<X11:PropertyNotify {'send_event': '0', 'serial': '0x10a63', 'delivered_to': '0x40000d', 'window': '0x40000d', 'atom': 'PRIMARY-UTF8_STRING', 'time': '203569680'}>)
28,996 do_property_notify(<X11:PropertyNotify {'send_event': '0', 'serial': '0x10a63', 'delivered_to': '0x40000d', 'window': '0x40000d', 'atom': 'PRIMARY-UTF8_STRING', 'time': '203569680'}>)
28,996 do_property_notify() property 'PRIMARY-UTF8_STRING' is gone?
Traceback (most recent call last):
  File "/usr/lib64/python3.7/site-packages/xpra/x11/gtk_x11/clipboard.py", line 631, in do_property_notify
    dtype, dformat = X11Window.GetWindowPropertyType(self.xid, event.atom, True)
  File "xpra/x11/bindings/window_bindings.pyx", line 1202, in xpra.x11.bindings.window_bindings.X11WindowBindingsInstance.GetWindowPropertyType
    raise BadPropertyType("None type")
xpra.x11.bindings.window_bindings.BadPropertyType: None type
29,015 compress:   0.1ms for    6x13   pixels at  185,301  for wid=1     using     rgb24 with ratio  75.0%  (    0KB to     0KB), sequence    49, client_options={'rgb_format': 'RGB'}
29,026 client   5 clipboard clipboard token received
29,026 client   5 clipboard targets= UTF8_STRING,TEXT,STRING
29,027 client   5 clipboard target= UTF8_STRING is valid: true
29,027 client   5 clipboard dtype= UTF8_STRING dformat= 8 wire-encoding= bytes

Summarized as:

  • click
  • click
  • clipboard change notification
  • we get ADDRCONF and send it to the client as UTF8_STRING
  • IE can't set the clipboard value just yet, so it sets the pending flag

Middle click:

34,856 process_button_action(WebSocket(ws socket: 192.168.0.10:10000 <- 192.168.0.108:59511), [b'button-action', 1, 2, 1, [504, 248], [], []])
34,856 do_process_mouse_common(WebSocket(ws socket: 192.168.0.10:10000 <- 192.168.0.108:59511), 1, [504, 248], -1)
34,857 move_pointer(1, [504, 248], -1) screen_no=-1, device=XTestPointerDevice, position=(504, 248)
34,857 xtest_fake_motion(-1, 504, 248)
34,857 xtest_fake_button(2, 1)
35,028 client   5 clipboard pending= true buffer= ADDRCONF
35,029 client   5 clipboard click event, with pending clipboard datatype= utf8_string , buffer= ADDRCONF
35,029 client   5 clipboard copy event, clipboard buffer= ADDRCONF
35,055 process_button_action(WebSocket(ws socket: 192.168.0.10:10000 <- 192.168.0.108:59511), [b'button-action', 1, 2, 0, [504, 248], [], []])
35,055 do_process_mouse_common(WebSocket(ws socket: 192.168.0.10:10000 <- 192.168.0.108:59511), 1, [504, 248], -1)
35,055 move_pointer(1, [504, 248], -1) screen_no=-1, device=XTestPointerDevice, position=(504, 248)
35,056 xtest_fake_motion(-1, 504, 248)
35,056 xtest_fake_button(2, 0)
35,072 compress:   0.1ms for  102x13   pixels at  185,301  for wid=1     using     rgb24 with ratio  13.6%  (    5KB to     0KB), sequence    50, client_options={'rgb_format': 'RGB', 'lz4': 1}
36,782 _process_pointer_position(WebSocket(ws socket: 192.168.0.10:10000 <- 192.168.0.108:59511), [b'pointer-position', 1, [505, 248], [], []]) readonly=False, ui_driver=9431c9d0-db66-842c-d9ff-adda9a89b378
36,783 do_process_mouse_common(WebSocket(ws socket: 192.168.0.10:10000 <- 192.168.0.108:59511), 1, [505, 248], -1)
36,783 move_pointer(1, [505, 248], -1) screen_no=-1, device=XTestPointerDevice, position=(505, 248)
36,784 xtest_fake_motion(-1, 505, 248)
36,785 motion_signaled(WindowModel(0x600022), <X11:MotionNotify {'send_event': '0', 'serial': '0x10b11', 'delivered_to': '0x600022', 'window': '0x600022', 'root': '0x299', 'subwindow': '0x60002d', 'time': '203577469', 'x': '175', 'y': '48', 'x_root': '505', 'y_root': '248', 'state': '0', 'is_hint': '1', 'same_screen': '1'}>) last mouse user=9431c9d0-db66-842c-d9ff-adda9a89b378
36,786 _process_pointer_position(WebSocket(ws socket: 192.168.0.10:10000 <- 192.168.0.108:59511), [b'pointer-position', 0, [505, 248], [], []]) readonly=False, ui_driver=9431c9d0-db66-842c-d9ff-adda9a89b378
36,786 do_process_mouse_common(WebSocket(ws socket: 192.168.0.10:10000 <- 192.168.0.108:59511), 0, [505, 248], -1)
36,787 move_pointer(0, [505, 248], -1) screen_no=-1, device=XTestPointerDevice, position=(505, 248)
36,787 xtest_fake_motion(-1, 505, 248)
36,788 motion_signaled(WindowModel(0x600022), <X11:MotionNotify {'send_event': '0', 'serial': '0x10b17', 'delivered_to': '0x600022', 'window': '0x600022', 'root': '0x299', 'subwindow': '0x60002d', 'time': '203577472', 'x': '175', 'y': '48', 'x_root': '505', 'y_root': '248', 'state': '0', 'is_hint': '1', 'same_screen': '1'}>) last mouse user=9431c9d0-db66-842c-d9ff-adda9a89b378

Summary:

  • middle click
  • use the event to set the browser clipboard value
  • server sends the screen update
  • middle click released

Nothing unusual, strange!

Change History (1)

comment:1 Changed 4 weeks ago by Antoine Martin

Milestone: 4.14.2
Status: newassigned
Note: See TracTickets for help on using tickets.