> On Juli 30, 2015, 12:05 nachm., Thomas Lübking wrote:
> > This is Qt4, right?
> >
> > ::activateWindow() should be equivalent to "XSetInputFocus(display,
> > winId(), XRevertToParent, X11->time);" unless
> > a) _NET_ACTIVE_WINDOW is listed in _NET_SUPPORTED on the root window
> > (supposed to be set and withdrawn by window managers, crash on exit?)
> > AND
> > b) Qt::X11BypassWindowManagerHint is NOT set on the toplevel window
> > OR
> > c) the window is not mapped/waiting for a mapping notification
> >
> > => If the problem occurs, login aside (VT1 or ssh) and
> >
> > export DISPLAY=:0
> > xprop -root | grep _NET_ACTIVE_WINDOW
> >
> > If that's emtpy, focus setting fails on either
> > "qt_widget_private(tlw)->topData()->waitingForMapNotify" (qt bug in event
> > handling? missing "XSync(dpy, false)"? events are being processed after
> > show) or "X11->time" being superseded by a more recent/future
> > XSetInputFocus call ("fixed" by passing CurrentTime)
> >
> > If the feature /is/ listed, that's a bug caused by a crashing WM => setting
> > Qt::X11BypassWindowManagerHint will likely be sufficient.
>
> Wolfgang Bauer wrote:
> > This is Qt4, right?
>
> Yes.
>
> > => If the problem occurs, login aside (VT1 or ssh) and
> >
> > export DISPLAY=:0
> > xprop -root | grep _NET_ACTIVE_WINDOW
>
> Hm, I don't seem to be able to get the properties of kdm's root window.
> After opening a new login session:
> ```
> # export DISPLAY=:1
> # xprop -root
> No protocol specified.
> xprop: unable to open display ':1'
> ```
> On fresh boot:
> ```
> # export DISPLAY=:0
> # xprop -root
> Invalid MIT-MAGIC-COOKIE-1 keyxprop: unable to open display ':0'
> ```
>
> If I kill kwin in a running KDE4 session, the feature is listed. But
> that's to be expected I suppose, if I understand you correctly.
> And focus changes when you move the mouse, which I think is undesirable
> at the login screen anyway (there are not really multiple windows, just modal
> dialogs).
>
> > If the feature /is/ listed, that's a bug caused by a crashing WM =>
> setting Qt::X11BypassWindowManagerHint will likely be sufficient.
>
> I will try if that helps.
>
> But just to avoid a misunderstanding here: this is about kdm's login
> greeter. There's no window manager running at all.
>
> Thomas Lübking wrote:
> > There's no window manager running at all.
>
> Yeah, got that ;-)
>
> > xprop: unable to open display ':1'
>
> Ah, that's likely because the superuser has the X11 authority - try from
> a su login.
>
> > And focus changes when you move the mouse
>
> That's the default X11 behavior, it will always behave like that (while
> unmanaged; and iirc it's suppressable by a config key/X switch)
>
> Wolfgang Bauer wrote:
> >> There's no window manager running at all.
>
> > Yeah, got that ;-)
>
> I thought so, but I still wanted to mention it because you were talking
> about a crashing WM... ;-)
>
> >> xprop: unable to open display ':1'
>
> > Ah, that's likely because the superuser has the X11 authority - try
> from a su login.
>
> Well, that was in fact a su login.
>
> But meanwhile I modified kdm to run xprop (at the same place that this
> patch modifies...).
> _NET_ACTIVE_WINDOW is *not* set, and _NET_SUPPORTED(ATOM) was not even
> mentioned in xprop's output.
>
> >> And focus changes when you move the mouse
>
> > That's the default X11 behavior, it will always behave like that (while
> unmanaged; and iirc it's suppressable by a config key/X switch)
>
> I know, I even mentioned that in the openSUSE bugreport (I have to admit
> that I used wrong terms though...)
>
> So, is this patch ok for you?
> I think it should be, as Qt itself just calls XSetInputFocus().
>
> The actual bug seems to be in Qt4, but that's unlikely to be fixed any
> more, isn't?
>
> Thomas Lübking wrote:
> The patch is certainly correct since it does the right thing, I'm rather
> worried *why* it's required in the first place, ie. why the Qt code doesn't
> work as expected here.
>
> Either the mapping condition flag is broken or there's trouble with
> timestamp handling.
>
> If you want to do another test on the causes, check whether you patch
> still works with QX11Info::appTime() instead of CurrentTime (but that's just
> for understanding, there's no problem with the patch itself, esp. not on
> local X11 servers)
> If you want to do another test on the causes, check whether you patch still
> works with QX11Info::appTime() instead of CurrentTime
Yes, that seems to work.
- Wolfgang
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/121755/#review83168
-----------------------------------------------------------
On Juli 29, 2015, 11:39 vorm., Wolfgang Bauer wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://git.reviewboard.kde.org/r/121755/
> -----------------------------------------------------------
>
> (Updated Juli 29, 2015, 11:39 vorm.)
>
>
> Review request for kde-workspace, Thomas Lübking and Oswald Buddenhagen.
>
>
> Bugs: 268988 and 338018
> http://bugs.kde.org/show_bug.cgi?id=268988
> http://bugs.kde.org/show_bug.cgi?id=338018
>
>
> Repository: kde-workspace
>
>
> Description
> -------
>
> [Commit
> d03df616](https://projects.kde.org/projects/kde/kde-workspace/repository/revisions/d03df6169ecb291318e87099a346488c961fe1d6)
> made input grabbing optional in KDM. But without it, input dialogs do not
> correctly get focus and keyboard shortcuts don't work.
>
> KDM does call activateWindow() on opened dialogs, but this doesn't seem to
> have the desired effect without a window manager running. And if you hover
> the mouse over a widget, it visually looks like it has focus, but often it
> doesn't accept input anyway.
>
> This patch sets the input focus via XSetInputFocus() instead, this also has
> the positive side-effect that a widget retains the focus if you move the
> mouse away.
>
>
> Diffs
> -----
>
> kdm/kfrontend/kfdialog.cpp 3f6fa84
>
> Diff: https://git.reviewboard.kde.org/r/121755/diff/
>
>
> Testing
> -------
>
> Tried all things mentioned in the bug reports, keyboard input and shortcuts
> work now in all cases.
>
> I also tested with onboard keyboards (xvkbd and kvkbd), both work fine.
> Before, kvkbd didn't work at all (the text input widget lost focus as soon as
> you moved the mouse to the OSK) and xvkbd only works if you forced the focus
> to the text input widget via its "Focus" button (from which this patch was
> inspired actually ;-) ).
>
> Other openSUSE users have tested this as well, and the patch is even part of
> openSUSE's official package since January.
> See also https://bugzilla.opensuse.org/show_bug.cgi?id=772344
>
>
> Thanks,
>
> Wolfgang Bauer
>
>