xpra icon
Bug tracker and wiki

Opened 3 months ago

Closed 3 months ago

Last modified 3 months ago

#2723 closed defect (fixed)

seamless JetBrains apps do not "loose focus" "properly"

Reported by: stdedos Owned by: stdedos
Priority: minor Milestone: 4.0
Component: server Version: 3.0.x
Keywords: Cc:

Description (last modified by stdedos)

JetBrains products automatically save the file when the app is loosing focus (So Ctrl+S is obsoleted)

However, when I am using it via xpra, that doesn't seem to happen.

We have discussed it in some other ticket, that all applications loose focus when a non-xpra window is focused (in Windows) - but that doesn't seem to happen.
That doesn't happen either at the case that I am changing focus from one seamless session's windows to another session's window.

Change History (11)

comment:1 Changed 3 months ago by stdedos

Description: modified (diff)

comment:2 Changed 3 months ago by Antoine Martin

Owner: changed from Antoine Martin to stdedos

Can you please post the -d focus client log output of just when this should be happening?

comment:3 Changed 3 months ago by stdedos

Owner: changed from stdedos to Antoine Martin
"Xpra-Python3-x86_64_4.0-r25898\xpra_cmd" attach ssh://user@ip/2 --ssh="plink -ssh -agent" --modal-windows=no --title="@title@ on @hostname@/@server-display@" -d focus --opengl=no

2020-04-09 15:08:01,492 Xpra GTK3 client version 4.0-r25898 64-bit
2020-04-09 15:08:01,493  running on Microsoft Windows 10
2020-04-09 15:08:01,571 Warning: failed to import opencv:
2020-04-09 15:08:01,571  No module named 'cv2'
2020-04-09 15:08:01,572  webcam forwarding is disabled
2020-04-09 15:08:02,625 GStreamer version 1.16.2 for Python 3.8.2 64-bit
2020-04-09 15:08:02,864 keyboard layout code 0x409
2020-04-09 15:08:02,865 identified as 'United States - English' : us
2020-04-09 15:08:03,283  keyboard settings: layout=us
2020-04-09 15:08:03,289  desktop size is 4160x1440 with 1 screen:
2020-04-09 15:08:03,290   Default (1100x381 mm - DPI: 96x96) workarea: 4160x1400
2020-04-09 15:08:03,291     Generic PnP Monitor 1600x900 at 0x534 (309x174 mm - DPI: 131x131) workarea: 1600x860
2020-04-09 15:08:03,291     C32JG5x 2560x1440 at 1600x0 (697x392 mm - DPI: 93x93) workarea: 2560x1400
2020-04-09 15:08:15,519 enabled remote logging
2020-04-09 15:08:15,521 Xpra GTK3 X11 server version 3.0.8-r25889 64-bit
2020-04-09 15:08:15,522  running on Linux Ubuntu 16.04 xenial
2020-04-09 15:08:15,531 Attached to ip:22
2020-04-09 15:08:15,532  (press Control-C to detach)


(xpra_cmd:7280): Pango-WARNING **: 15:08:16.310: couldn't load font "Bitstream Vera Sans Not-Rotated 14.662109375", falling back to "Sans Not-Rotated 14.662109375", expect ugly output.
2020-04-09 15:08:17,245 focus-in-event for wid=1
2020-04-09 15:08:17,251 do_xpra_focus_in_event(<Gdk.EventFocus object at 0x000000001e6aad60 (void at 0x0000000008bd5460)>)
2020-04-09 15:08:17,252 ClientWindow(1) focus_change(ClientWindow(1), <GParamBoolean 'has-toplevel-focus'>) has-toplevel-focus=True, _been_mapped=False
2020-04-09 15:08:17,259 recheck_focus() wid=1, focused=None, latest=True
2020-04-09 15:08:17,261 update_focus(1, True) focused=None, grabbed=None
2020-04-09 15:08:17,261 send_focus(1)
2020-04-09 15:08:17,270 focus-out-event for wid=1
2020-04-09 15:08:17,272 do_xpra_focus_out_event(<Gdk.EventFocus object at 0x000000001e6b28b0 (void at 0x0000000008bd5a00)>)
2020-04-09 15:08:17,274 ClientWindow(1) focus_change(ClientWindow(1), <GParamBoolean 'has-toplevel-focus'>) has-toplevel-focus=False, _been_mapped=True
2020-04-09 15:08:17,277 update_focus(1, False) focused=1, grabbed=None
2020-04-09 15:08:17,282 focus-in-event for wid=2
2020-04-09 15:08:17,284 do_xpra_focus_in_event(<Gdk.EventFocus object at 0x000000001e6b4220 (void at 0x0000000008bd5960)>)
2020-04-09 15:08:17,286 ClientWindow(2) focus_change(ClientWindow(2), <GParamBoolean 'has-toplevel-focus'>) has-toplevel-focus=True, _been_mapped=False
2020-04-09 15:08:17,289 recheck_focus() wid=1, focused=None, latest=False
2020-04-09 15:08:17,296 recheck_focus() wid=2, focused=None, latest=True
2020-04-09 15:08:17,299 update_focus(2, True) focused=None, grabbed=None
2020-04-09 15:08:17,301 send_focus(2)
2020-04-09 15:08:17,561 ClientWindow(1) focus_change('initial',) has-toplevel-focus=False, _been_mapped=True
2020-04-09 15:08:17,567 update_focus(1, False) focused=2, grabbed=None
2020-04-09 15:08:17,568 window 1 lost a focus it did not have!? (simulating focus before losing it)
2020-04-09 15:08:17,570 send_focus(1)
2020-04-09 15:08:17,572 ClientWindow(2) focus_change('initial',) has-toplevel-focus=True, _been_mapped=True
2020-04-09 15:08:17,573 update_focus(2, True) focused=None, grabbed=None
2020-04-09 15:08:17,575 send_focus(2)
2020-04-09 15:08:31,073 update_focus(0, False) focused=2, grabbed=None
2020-04-09 15:08:31,080 focus-out-event for wid=2
2020-04-09 15:08:31,083 do_xpra_focus_out_event(<Gdk.EventFocus object at 0x000000001e6bd2c0 (void at 0x0000000008bfff10)>)
2020-04-09 15:08:31,085 ClientWindow(2) focus_change(ClientWindow(2), <GParamBoolean 'has-toplevel-focus'>) has-toplevel-focus=False, _been_mapped=True
2020-04-09 15:08:31,089 update_focus(2, False) focused=None, grabbed=None
2020-04-09 15:08:31,091 recheck_focus() wid=2, focused=None, latest=False
2020-04-09 15:08:31,112 send_lost_focus() focused=None
2020-04-09 15:08:31,115 send_focus(0)
2020-04-09 15:08:31,954 _unfocus() wid=765, focused=None
2020-04-09 15:08:32,138 _unfocus() wid=766, focused=None
2020-04-09 15:08:32,164 _unfocus() wid=767, focused=None
2020-04-09 15:08:33,859 focus-in-event for wid=1
2020-04-09 15:08:33,869 do_xpra_focus_in_event(<Gdk.EventFocus object at 0x000000001e6cccc0 (void at 0x000000000863b470)>)
2020-04-09 15:08:33,871 ClientWindow(1) focus_change(ClientWindow(1), <GParamBoolean 'has-toplevel-focus'>) has-toplevel-focus=True, _been_mapped=True
2020-04-09 15:08:33,880 update_focus(1, True) focused=None, grabbed=None
2020-04-09 15:08:33,884 send_focus(1)
2020-04-09 15:08:33,887 recheck_focus() wid=1, focused=1, latest=True
2020-04-09 15:08:33,932 _unfocus() wid=764, focused=1
2020-04-09 15:08:52,834 update_focus(0, False) focused=1, grabbed=None
2020-04-09 15:08:52,849 focus-out-event for wid=1
2020-04-09 15:08:52,851 do_xpra_focus_out_event(<Gdk.EventFocus object at 0x000000001e6d3090 (void at 0x000000000863b470)>)
2020-04-09 15:08:52,852 ClientWindow(1) focus_change(ClientWindow(1), <GParamBoolean 'has-toplevel-focus'>) has-toplevel-focus=False, _been_mapped=True
2020-04-09 15:08:52,853 update_focus(1, False) focused=None, grabbed=None
2020-04-09 15:08:52,876 send_lost_focus() focused=None
2020-04-09 15:08:52,879 send_focus(0)
2020-04-09 15:08:52,882 recheck_focus() wid=1, focused=None, latest=False

2020-04-09 15:08:53,106 Python/GTK3 Client got signal SIGINT
2020-04-09 15:08:53,108 exiting
2020-04-09 15:08:53,122 _unfocus() wid=1, focused=None
2020-04-09 15:08:53,135 _unfocus() wid=2, focused=None

comment:4 Changed 3 months ago by stdedos

Summary: seamless apps do not "loose focus" "properly"seamless JetBrains apps do not "loose focus" "properly"

I am highlighting the fact that "properly" reflects to what these apps expect (and happens) on a normal desktop environment

comment:5 Changed 3 months ago by Antoine Martin

Owner: changed from Antoine Martin to Antoine Martin
Status: newassigned

Looks like we do send the "focus-away" event:

send_focus(0)

But I see some other things that need to be improved:

ClientWindow(1) focus_change('initial',) has-toplevel-focus=False, _been_mapped=True
update_focus(1, False) focused=2, grabbed=None
window 1 lost a focus it did not have!? (simulating focus before losing it)

Initial focus comes very late and triggers a back and forth we don't need.

Maybe one of those fixes will help.

comment:6 Changed 3 months ago by Antoine Martin

I think this is a python3 / GTK3 regression:

  • with python2 / GTK2
    process_focus: wid=0
    focus wid=0 has_focus=1
    reset_focus() 1 / WindowModel(0x800022) had focus (toplevel=WorldWindow(0x400023))
    reset_x_focus: widget with focus: None
    Take Focus -> world window
    sending WM_TAKE_FOCUS: 0x400023, X11 timestamp=90448465L
    world window got focus: <gtk.gdk.Event at 0x7f9e92671f00: GDK_FOCUS_CHANGE>, has-toplevel-focus=True
    client   1 @20.185 recheck_focus() wid=1, focused=None, latest=False
    
  • with python3 / GTK3:
    process_focus: wid=0
    focus wid=0 has_focus=1
    reset_focus() 1 / WindowModel(0x600022) had focus (toplevel=None)
    

Which means that you should be able to fix things just by switching to the python2 server.

comment:7 in reply to:  6 Changed 3 months ago by stdedos

Replying to Antoine Martin:

Which means that you should be able to fix things just by switching to the python2 server.

So... Is this one of closed/upstream bugs? 😕

comment:8 Changed 3 months ago by Antoine Martin

So... Is this one of closed/upstream bugs? 😕

No, it's something that needs to be implemented differently in v3.
So far, I thought we could manage without it.

comment:9 Changed 3 months ago by Antoine Martin

Owner: changed from Antoine Martin to stdedos
Status: assignednew

This should be fixed in r26079.

There are beta xenial builds with this fix in the beta area.

Note to self, still need to fix window 1 lost a focus it did not have!? (simulating focus before losing it)

comment:10 Changed 3 months ago by Antoine Martin

Note to self, still need to fix window 1 lost a focus it did not have!? (simulating focus before losing it)

Done in r26082, this one is client side.

comment:11 Changed 3 months ago by stdedos

Resolution: fixed
Status: newclosed

I cannot read the r26079 fix (It seems that you added, not fixed the world window), but it is anyway working now.

"Xpra-Python3-x86_64_4.0-r25898\xpra_cmd" attach ssh://user@ip/2 --ssh="plink -ssh -agent" --modal-windows=no --title="@title@ on @hostname@/@server-display@" --opengl=no

2020-04-14 16:46:59,877 Xpra GTK3 client version 4.0-r25898 64-bit
2020-04-14 16:46:59,879  running on Microsoft Windows 10
2020-04-14 16:46:59,953 Warning: failed to import opencv:
2020-04-14 16:46:59,953  No module named 'cv2'
2020-04-14 16:46:59,953  webcam forwarding is disabled
2020-04-14 16:47:00,626 GStreamer version 1.16.2 for Python 3.8.2 64-bit
2020-04-14 16:47:00,874 keyboard layout code 0x409
2020-04-14 16:47:00,875 identified as 'United States - English' : us
2020-04-14 16:47:01,178  keyboard settings: layout=us
2020-04-14 16:47:01,181  desktop size is 4160x1440 with 1 screen:
2020-04-14 16:47:01,181   Default (1100x381 mm - DPI: 96x96) workarea: 4160x1400
2020-04-14 16:47:01,181     Generic PnP Monitor 1600x900 at 0x534 (309x174 mm - DPI: 131x131) workarea: 1600x860
2020-04-14 16:47:01,181     C32JG5x 2560x1440 at 1600x0 (697x392 mm - DPI: 93x93) workarea: 2560x1400
2020-04-14 16:47:09,727 enabled remote logging
2020-04-14 16:47:09,731 Xpra GTK3 X11 server version 3.0.9-r26081 64-bit
2020-04-14 16:47:09,733  running on Linux Ubuntu 16.04 xenial
2020-04-14 16:47:09,745 Attached to ip:22
2020-04-14 16:47:09,746  (press Control-C to detach)

Thank you :-D

Last edited 3 months ago by stdedos (previous) (diff)
Note: See TracTickets for help on using tickets.